PAT Advanced 1023 Have Fun with Numbers

#include <iostream>
#include <string>
#include <map>

using namespace std;

void prob1023()
{
    string num;
    cin >> num;
    string num0 = num;
    int flag = 0;
    for (auto iter = num.rbegin(); iter != num.rend(); ++iter)
    {
        int r = *iter - '0' + *iter - '0' + flag;
        if (r > 9)
        {
            flag = 1;
            r = r - 10;
        }
        else
        {
            flag = 0;
        }
        *iter = r + '0';
    }
    if (flag == 1)
    {
        num.insert(num.begin(), '1');
    }
    map<char, int> record0;
    map<char, int> record;
    for (auto iter = num0.begin(); iter != num0.end(); ++iter)
    {
        if (record0.find(*iter) == record0.end())
        {
            record0[*iter] = 1;
        }
        else
        {
            ++record0[*iter];
        }
    }
    for (auto iter = num.begin(); iter != num.end(); ++iter)
    {
        if (record.find(*iter) == record.end())
        {
            record[*iter] = 1;
        }
        else
        {
            ++record[*iter];
        }
    }
    if (record0 == record)
    {
        cout << "Yes\n";
    }
    else
    {
        cout << "No\n";
    }
    cout << num;
}

 

posted @ 2019-04-06 16:55  鞭挞代码  阅读(107)  评论(0编辑  收藏  举报