Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, with no duplication. Double it we will obtain 246913578, which happens to be another 9-digit number consisting exactly the numbers from 1 to 9, only in a different permutation. Check to see the result if we double it again!
Now you are suppose to check if there are more numbers with this property. That is, double a given number with k digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.
Input Specification:
Each input file contains one test case. Each case contains one positive integer with no more than 20 digits.
Output Specification:
For each test case, first print in a line "Yes" if doubling the input number gives a number that consists of only a permutation of the digits in the original number, or "No" if not. Then in the next line, print the doubled number.
Sample Input:
1234567899
Sample Output:
Yes 2469135798 不知道为什么有一个样例没过,觉得写得没毛病啊
1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class A { 5 6 public static void main(String[] args) { 7 Scanner cin = new Scanner(System.in); 8 BigInteger a = cin.nextBigInteger(); 9 BigInteger bb = a; 10 BigInteger c = BigInteger.valueOf(10); 11 BigInteger d; 12 BigInteger ans = a.add(bb); 13 BigInteger b = ans; 14 boolean book = true; 15 int[] book0 = new int[10]; 16 while(!a.equals(BigInteger.valueOf(0))) { 17 // System.out.println(a.equals(0)); 18 d = a.mod(c); 19 a = a.divide(c); 20 book0[d.intValue()] = 1; 21 } 22 while(!b.equals(BigInteger.ZERO)) { 23 d = b.mod(c); 24 b = b.divide(c); 25 if(book0[d.intValue()] != 1) { 26 book = false; 27 break; 28 } 29 } 30 if(book == false) { 31 System.out.println("No"); 32 } 33 else { 34 System.out.println("Yes"); 35 } 36 System.out.println(ans); 37 38 } 39 40 }
原文地址:https://www.cnblogs.com/xuyanqd/p/8590785.html