1023 Have Fun with Numbers

有两个测试点过不了

img


#include<iostream>
#include<string>
#include<map>
using namespace std;
map<char,int> mp1,mp2;
string Double(string x){
    string str;
    int t=0;//用来记录下一位的进位 
    for(int i=x.length()-1;i>=0;i--){
        int k=x[i]-'0';
        k=k*2+t;
        int a=k%10;
        str=to_string(a)+str; 
        t=k/10;//给下一位 
    }
    return str;
}
int main(){
    string str1;
    cin>>str1;
    for(int i=0 ;i<str1.length() ;i++)
        mp1[str1[i]]++;
    string str2 = Double(str1);
    for(int i=0 ;i<str2.length() ;i++)
        mp2[str2[i]]++;
    map<char,int>::iterator it;
    for(it=mp2.begin();it!=mp2.end();it++)
        cout<<it->first<<it->second<<" ";
    if(mp1 == mp2&&str1.length()==str2.length())
        cout << "Yes";
    else 
        cout << "No";
    cout << endl << str2;
    return 0;
} 

已解决!