PTA
乘2后不变
1 #include<stdio.h> 2 #include<string.h> 3 #define N 21 4 5 int main(){ 6 char original[N]; 7 int doubledNum[N],i,digitsCount[10]; 8 int carry = 0,isSame = 1; 9 gets(original); 10 11 for(i=0;i<strlen(original);i++){ 12 doubledNum[i] = 2*(original[i]-'0'); 13 } 14 for(i=strlen(original)-1;i>=0;i--){ 15 if(i>0){ 16 doubledNum[i-1] += doubledNum[i]/10; 17 doubledNum[i] %= 10; 18 } 19 else{ 20 carry += doubledNum[i]/10; 21 doubledNum[i] %= 10; 22 } 23 } 24 if(carry){ 25 isSame = 0; 26 }else{ 27 for(i=0;i<10;i++){ 28 digitsCount[i] = 0; 29 } 30 for(i=0;i<strlen(original);i++){ 31 digitsCount[original[i]-'0']++; 32 } 33 for(i=0;i<strlen(original);i++){ 34 digitsCount[doubledNum[i]]--; 35 } 36 for(i=0;i<10;i++){ 37 if(digitsCount[i]!=0){ 38 isSame = 0; 39 break; 40 } 41 } 42 } 43 if(isSame){ 44 printf("Yes "); 45 }else{ 46 printf("No "); 47 } 48 if(carry){ 49 printf("%d",carry); 50 } 51 for(i=0;i<strlen(original);i++){ 52 printf("%d",doubledNum[i]); 53 } 54 return 0; 55 }