因为最多有20个字符,int和long long都不行,所以只能用字符串操作。水题~
#include<iostream> #include<algorithm> #include<string.h> #define maxn 25 using namespace std; typedef long long ll; char s1[maxn]; int s2[maxn]; int a[10]; int main() {memset(s2,0,sizeof(s2));memset(a,0,sizeof(a));cin>>s1;int len=strlen(s1);for(int i=0;i<len;i++){a[s1[i]-'0']++;}int r=0,p=0,tmp;for(int i=len-1;i>=0;i--){tmp=(s1[i]-'0')*2+r;s2[p++]=tmp%10;r=tmp/10;if(i==0&&r!=0)s2[p++]=r;}for(int i=0;i<p;i++){a[s2[i]]--;}int flag=1;for(int i=0;i<=9;i++){if(a[i]!=0){flag=0;break;}}if(flag)cout<<"Yes"<<endl;elsecout<<"No"<<endl;for(int i=p-1;i>=0;i--)cout<<s2[i];cout<<endl; }