00-自测4. Have Fun with Numbers (20)
来源:互联网 发布:sql怎么用别名查询 编辑:程序博客网 时间:2024/05/16 13:03
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:1234567899Sample Output:
Yes2469135798
判断一个数乘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 22int 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
- 自测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)
- 自测4. Have Fun with Numbers
- 自测4. Have Fun with Numbers
- 00-自测4Have Fun with Numbers (20)
- PAT00-自测4. Have Fun with Numbers (20)
- 自测题IV——Have Fun with Numbers (20)
- 用C/C++解决一些数学问题(一)
- 进程间通信 - 剪贴板实现
- 使用jquery的click事件显示隐藏div
- Java任务调度框架Quartz
- javaIO总结
- 00-自测4. Have Fun with Numbers (20)
- 进程与端口映射
- std::nothrow
- 克鲁斯卡尔算法求解最小生成树
- Java定时任务
- C++ 内存详解(二)
- 【文件压缩】 Android Jar、Zip文件压缩和解压缩处理
- 删除重复代码--提升代码质量
- AspNet MVC4 教学-19:Asp.Net MVC4 利用Linq技术的搜索应用快速Demo