您的位置:首页 > 其它

PAT1023

2015-12-13 02:04 253 查看
http://www.patest.cn/contests/pat-a-practise/1023

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

#include <iostream>
#define maxn 25

using 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: