1023. Have Fun with Numbers (20) @ PAT (Advanced Level) Practise

来源:互联网 发布:mac pro17款评测 编辑:程序博客网 时间:2024/05/29 09:59

水题,这个数用字符串表示,在模拟*2

#include<iostream>#include<string>#include<vector>#include<map>#include<algorithm>using namespace std;map<char,int> dm;map<int,char> im;string n1;vector<char> n2,n3;void printN2(){vector<char>::iterator it;for(it=n3.begin();it!=n3.end();it++)cout<<*it;cout<<endl;}int main(){for(int i=0;i<10;i++){dm['0'+i]=i;im[i]='0'+i;}cin>>n1;//*2int tmp;int carry=0;string::reverse_iterator rsit;for(rsit=n1.rbegin();rsit!=n1.rend();rsit++){tmp=(dm[*rsit]) *2+carry;if(tmp>9){carry=tmp/10;tmp%=10;}elsecarry=0;n2.push_back(im[tmp]);}if(carry!=0)n2.push_back(im[carry]);n3.assign(n2.rbegin(),n2.rend());//check permutationvector<char>::iterator cit;if(n1.length()!=n2.size()){cout<<"No"<<endl;printN2();}else{for(rsit=n1.rbegin();rsit!=n1.rend();rsit++){cit=find(n2.begin(),n2.end(),*rsit);if(cit!=n2.end()){*cit='f';//found}else{cout<<"No"<<endl;printN2();return 0;}}cout<<"Yes"<<endl;printN2();}return 0;}