00-自测4. Have Fun with Numbers (20)

来源:互联网 发布:今天eia数据公布 编辑:程序博客网 时间:2024/05/16 02:37

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:
Yes2469135798
//已通过,但是觉得输入0应该输出Yes+0,这个没有体现出。 #include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#include <ctype.h>int main()  {char s[22];int ss[22]={0};int number[10]={0};int l,i,j,c=0,flag=1;scanf("%s",s);l=strlen(s);for(i=l-1;i>=0;i--){ss[c++]=s[i]-'0';}for(i=0;i<l;i++){number[ss[i]]++;ss[i]*=2;}for(i=0;i<l;i++){if(ss[i]>9){ss[i]=ss[i]-10;ss[i+1]++;}}for(i=0;i<l;i++){number[ss[i]]--;}for(i=0;i<10;i++){if(number[i]!=0){flag=0;break;}}for(i=20;;i--) {if(ss[i]!=0)break;}if(flag==0){printf("No\n");}else{ printf("Yes\n"); }for(;i>=0;i--)printf("%d",ss[i]);printf("\n");    return 0;  }


0 0