PAT甲级1023题(趣味数字)


1.题目介绍

1023

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


文章作者: Peyton
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Peyton !
  目录