数据结构起步能力自测4-have fun with numbers
2017-03-03 11:02
127 查看
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
kkk
digits, you are to tell if the resulting number consists of only a permutation of the digits in the original number.
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
kkk
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
#include <iostream> #include <cmath> #include <string.h> using namespace std; #define max 22 char input[max]; int flag_1[11]; int flag_2[11]; int s[max]; bool isSame=true; int main() { int len,i,j,temp; int jinwei;//进位 //清零 memset(flag_1,0,sizeof(flag_1)); memset(flag_2,0,sizeof(flag_2)); cin>>input; len=strlen(input); for (j=0,i=len-1;i>=0;i--,j++)//i--倒叙输入,低位数放前面,在编写加法的时候逻辑比较简单 { s[j]=input[i]-'0';//将char数字转换为int数字 flag_1[s[j]]++;//统计输入数据中数字出现频率 } jinwei=0; //编写乘法 for(i=0;i<len;i++) { temp=(s[i]*2+jinwei)/10; s[i]=(s[i]*2+jinwei)%10; flag_2[s[i]]++;//统计输出数据中数字出现的频率 jinwei=temp; } for (j=1;j<=10;j++) { if(flag_1[j]!=flag_2[j]) { isSame=false; break; } } if (isSame) cout<<"Yes"<<endl; else cout<<"No"<<endl; //输出数字 if (jinwei>0)//最高位有进位 { j=i; s[i]=jinwei;//最高位为进位 } else { j=--i; } for(;j>=0;j--)//同样倒叙输出 { cout<<s[j]; } cout<<endl; return 0; }
相关文章推荐
- PAT-中国大学MOOC-陈越、何钦铭-数据结构基础习题集 00-自测4. Have Fun with Numbers (20) 【二星级】
- 自测4. Have Fun with Numbers (20)
- 自测04——Have Fun with Numbers
- 自测4. Have Fun with Numbers
- 00-自测4. Have Fun with Numbers (20)
- PTA自测-4 Have Fun with Numbers
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 自测4. Have Fun with Numbers
- 00-自测4 Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- PTA-自测-4 Have Fun with Numbers
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- PAT00-自测4. Have Fun with Numbers (20)
- 自测-4 Have Fun with Numbers
- 00-自测4. Have Fun with Numbers (20)
- PAT_自测4_Have Fun with Numbers
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)