自测-4 Have Fun with Numbers(20 分)
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 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.在打印完No以后也要把该数字打印出来
2.Java long最长为18位所以要使用大数来解决
AcCode:
import java.math.BigInteger;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
String strA = in.next();
BigInteger A = new BigInteger(strA);
BigInteger B = A.multiply(BigInteger.valueOf(2));
String strB = B.toString();
int[] numsA = new int[10];
for (int i = 0; i < strA.length(); i++) {
if (strA.charAt(i) == '0') {
numsA[0]++;
} else if (strA.charAt(i) == '1') {
numsA[1]++;
} else if (strA.charAt(i) == '2') {
numsA[2]++;
} else if (strA.charAt(i) == '3') {
numsA[3]++;
} else if (strA.charAt(i) == '4') {
numsA[4]++;
} else if (strA.charAt(i) == '5') {
numsA[5]++;
} else if (strA.charAt(i) == '6') {
numsA[6]++;
} else if (strA.charAt(i) == '7') {
numsA[7]++;
} else if (strA.charAt(i) == '8') {
numsA[8]++;
} else if (strA.charAt(i) == '9') {
numsA[9]++;
}
}
int[] numsB = new int[10];
for (int i = 0; i < strB.length(); i++) {
if (strB.charAt(i) == '0') {
numsB[0]++;
} else if (strB.charAt(i) == '1') {
numsB[1]++;
} else if (strB.charAt(i) == '2') {
numsB[2]++;
} else if (strB.charAt(i) == '3') {
numsB[3]++;
} else if (strB.charAt(i) == '4') {
numsB[4]++;
} else if (strB.charAt(i) == '5') {
numsB[5]++;
} else if (strB.charAt(i) == '6') {
numsB[6]++;
} else if (strB.charAt(i) == '7') {
numsB[7]++;
} else if (strB.charAt(i) == '8') {
numsB[8]++;
} else if (strB.charAt(i) == '9') {
numsB[9]++;
}
}
int i;
for ( i = 0; i < numsB.length; i++) {
if(numsA[i]!=numsB[i]) {
break;
}
}
if(strA.length()==strB.length() && i==numsB.length) {
System.out.println("Yes");
}else {
System.out.println("No");
}
System.out.println(strB);
}
}