PAT1023

来源:互联网 发布:apache默认网站目录 编辑:程序博客网 时间:2024/06/16 10:40

http://www.patest.cn/contests/pat-a-practise/1023

注意点:题目中的数不超过20位,而64位long long整型只有19位,所以这里采用字符数组的形式保存整数的每一位,难点在于字符数组乘以2怎么实现。

#include <iostream>#define maxn 25using namespace std;int main(){int a[10]={0},A[10]={0}; char b[maxn];char ch; int cnt=1;while(cin>>ch){++a[ch-'0'];b[cnt]=ch;++cnt;}b[0]='0';int flag=0;for(int i=cnt-1;i>0;--i){if(b[i]-'0'>4){b[i]='0'+(b[i]-'0')*2-10+flag;++A[b[i]-'0'];flag=1;if(i==1){b[0]='1';}}else{b[i]+=(b[i]-'0')+flag;++A[b[i]-'0'];flag=0;}}if(b[0]!='0'){++A[b[0]-'0'];}int equ=1;for(int i=0;i<10;++i){if(a[i]!=A[i]){equ=0;cout<<"No\n";break;}}if(equ==1){cout<<"Yes\n";}int sta=0;if(b[0]=='0'){sta=1;}for(int i=sta;i<cnt;++i){cout<<b[i];}return 0;}

0 0
原创粉丝点击