1.题目介绍
2.考察点,难度
高精度题,string字符串处理,难度易
3.解题代码
#include <bits/stdc++.h>
using namespace std;
int main(){
map<char,int> in,re;
string s,o="";
cin>>s;
reverse(s.begin(),s.end());
int flag=0;
for(int i=0;i<s.length();i++){
o+=to_string((flag+stoi(s.substr(i,1))*2)%10);
flag=(flag+stoi(s.substr(i,1))*2)/10;
in[s[i]]+=1;
re[o[i]]+=1;
}
if(flag!=0){
o+=to_string(flag);
re[flag+'0']+=1;
}
reverse(o.begin(),o.end());
flag=1;
for(int i=0;i<10;i++){
if(in[i+'0']==re[i+'0']) continue;
else{
flag=0;
}
}
flag? cout<<"Yes"<<endl:cout<<"No"<<endl;
cout<<o<<endl;
return 0;
}
4.原题地址
https://pintia.cn/problem-sets/994805342720868352/problems/994805478658260992