PAT 1023. Have Fun with Numbers (20)
2015-07-06 15:52
344 查看
题目说明:输入一个数,如果这个数翻倍之后和原数每一位的数字一样,只是排序不同,则输出Yes,否则输出No。
思路:原数最多20位,不能直接乘以2,需要按位去计算。用两个数组分别存放原数和2倍数每个数字的出现次数,最后对比得到结果。
代码:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
char ori[25];
char res[25];
int countori[10];
int countres[10];
int main(){
cin>>ori;
int c=0,s;
//计算翻倍后的结果
for(int i=strlen(ori)-1;i>=0;i--){
s=(ori[i]-'0')*2;
res[i]=s%10+c+'0';
c=s/10;
}
//如果位数变多,不符合
if(c==1){
cout<<"No"<<endl;
cout<<'1'<<res<<endl;
return 0;
}
//计算每个数字的出现次数
for(int i=0;i<strlen(ori);i++){
countori[ori[i]-'0']++;
countres[res[i]-'0']++;
}
//比较翻倍前后是否相同
bool flag=true;
for(int i=0;i<10;i++){
if(countori[i]!=countres[i]){
flag=false;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
cout<<res<<endl;
return 0;
}
思路:原数最多20位,不能直接乘以2,需要按位去计算。用两个数组分别存放原数和2倍数每个数字的出现次数,最后对比得到结果。
代码:
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
char ori[25];
char res[25];
int countori[10];
int countres[10];
int main(){
cin>>ori;
int c=0,s;
//计算翻倍后的结果
for(int i=strlen(ori)-1;i>=0;i--){
s=(ori[i]-'0')*2;
res[i]=s%10+c+'0';
c=s/10;
}
//如果位数变多,不符合
if(c==1){
cout<<"No"<<endl;
cout<<'1'<<res<<endl;
return 0;
}
//计算每个数字的出现次数
for(int i=0;i<strlen(ori);i++){
countori[ori[i]-'0']++;
countres[res[i]-'0']++;
}
//比较翻倍前后是否相同
bool flag=true;
for(int i=0;i<10;i++){
if(countori[i]!=countres[i]){
flag=false;
break;
}
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
cout<<res<<endl;
return 0;
}
相关文章推荐
- Linux服务篇之五:YUM构建LAMP架构配置
- Mysql 列转行统计查询 、行转列统计查询
- 黑马程序员——java基础---集合(第14天)
- 人月神话-读书笔记
- Android中像素单位dp、sp、px应用于哪些地方
- 解决Eclipse发布webproject, jar无法发布到tomcat lib目录下的问题
- bp神经网络及matlab实现
- Controller之间传递数据:协议传值
- [AC自己主动机+可能性dp] hdu 3689 Infinite monkey theorem
- Android TextView自动换行文字排版参差不齐的原因
- [leetcode][list] Reverse Linked List II
- 设置ubuntu root默认密码(初始密码)
- Java开发中的23种设计模式详解(转)
- LeetCode26:Remove Duplicates from Sorted Array
- sql server中同时执行select和update语句死锁问题
- JS数组方法汇总 array数组元素的添加和删除
- Controller之间传递数据:属性传值
- YUV422 YUV420 Planar \ Semi-Planar \ Interleaved
- 获取java项目根目录
- 1033. To Fill or Not to Fill (25)