00-自测4. Have Fun with Numbers (20)
2015-05-26 16:38
483 查看
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 to9, 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:
Sample Output:
判断一个数乘2后是否是原数的一个排列
思路:
int最大值 2147483647 10位
longlong 最大值 9223372036854775807 19位
不满足题目20位 故不能数值型 只能字符串处理
下面是进行long long 来进行操作的。
不可以的呢,下面采用字符串的思路来解决。
解决的时候,应该注意cout<<string和cin>>string的问题。
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
判断一个数乘2后是否是原数的一个排列
思路:
int最大值 2147483647 10位
longlong 最大值 9223372036854775807 19位
不满足题目20位 故不能数值型 只能字符串处理
下面是进行long long 来进行操作的。
#include <iostream> #include <math.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char** argv) { int a[11]={0}; int b[11]={0}; int i=0,tmp=0; // cin>>a; // int len=strlen(a); long long int n=0,res=0; scanf("%lld",&n); res=n; while(n!=0) { a[n%10]++; n=n/10; } n=res*2; res=n; while(n!=0) { b[n%10]++; n=n/10; } for(i=0; i<10; i++) { if(a[i]!=b[i]) { printf("No\n"); printf("%lld",res); return 0; } } printf("Yes\n%lld\n",res); return 0; }
不可以的呢,下面采用字符串的思路来解决。
解决的时候,应该注意cout<<string和cin>>string的问题。
#include <iostream> #include <cstring> #include <math.h> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ #define MAX 22 int main(int argc, char** argv) { //char a[MAX],b[MAX]; string a,b; int ra[10]={0},rb[10]={0}; cin>>a; int len=a.size(),carry=0,i=0; for(i=len-1;i>=0;i--) { ra[a[i]-'0']++; char c = ((a[i]-'0')*2+carry)%10 +'0'; rb[c-'0']++; b=c+b;//!!!! carry=((a[i]-'0')*2+carry)/10; } if(carry != 0) b=(char)(carry+'0')+b; for(i=0; i<10;i++) { if(ra[i]!=rb[i]) { cout<<"No\n"<<b; return 0; } } cout<<"Yes\n"<<b; return 0; }
相关文章推荐
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 00-自测4 Have Fun with Numbers (20)
- 00-自测4. Have Fun with Numbers (20)
- 数据结构练习 00-自测4. Have Fun with Numbers (20)
- PAT-中国大学MOOC-陈越、何钦铭-数据结构基础习题集 00-自测4. Have Fun with Numbers (20) 【二星级】
- PAT00-自测4. Have Fun with Numbers (20)
- 自测4. Have Fun with Numbers (20)
- [PTA MOOC] 自测-4 Have Fun with Numbers(20 分)
- 【PAT甲级】1023. Have Fun with Numbers (20)
- 1023. Have Fun with Numbers (20)-PAT甲级真题(大整数运算)