美文网首页
【PAT_1023】Have Fun with Numbers

【PAT_1023】Have Fun with Numbers

作者: 6J | 来源:发表于2018-07-31 13:43 被阅读0次

题目描述:

数字123456789是一个9位数字,由1到9的数字组成,没有重复。 双倍它我们将获得246913578,这恰好是另一个9位数字,由1到9的数字组成,只是在不同的排列中。现在您要检查有更多此属性数字。,给定数字加倍k个后判断结果数字是否是只包含原始数字中数字的排列。

输入

一个位数不超过20位的正整数nums

输出

第一行:数字加倍后如果是只包含原始数字中的数字的排列则输出Yes否则输出No

第二行:输出nums*2的结果

思路

用一个string存储这个整数nums,并用map映射其中每个数字的个数。然后将每个数位*2+进位得到结果数,同时将map中的该数的value减一。只有到最后map的为空时,这两个数字是相等的一个排列

#include<iostream>
#include<string>
#include<map>
#include<vector>
using namespace std;
int main() {
        string s;
        cin >> s;
        map<char, int>start;
        bool flag = true;
        int carry = 0,temp;
        for (int i = 0; i < s.size(); i++) {
            if (start.find(s[i]) == start.end()) {
                start.insert(pair<char, int>(s[i], 1));
            }
            else {
                start[s[i]]++;
            }
        }
        char c;
        vector<char>datas;
        for (int i = s.size() - 1; i >= 0;i--) {
            temp = (s[i] - '0') * 2 + carry;
            carry = temp / 10;
            c = temp % 10+'0';
            if(flag){
            if (start.find(c) == start.end()) {
              flag=false;
            }else {
                start[c]--;
                if(start[c]==0)start.erase(c);
            }
            }
            datas.push_back(c);
        }
        if(carry!=0){
          flag = false;
      datas.push_back(carry+'0');
    }
        if (!flag)cout << "No"<<endl;
        else { cout << "Yes"<<endl; }
        for (int i = datas.size() - 1; i >= 0; i--) {
            cout << datas[i];
        }
        return 0;
}

image.gif

相关文章

  • 【PAT_1023】Have Fun with Numbers

    题目描述: 数字123456789是一个9位数字,由1到9的数字组成,没有重复。 双倍它我们将获得24691357...

  • 【2020-03-12】pat甲级(1022-1052)

    1022 Digital Library (30分) 1023 Have Fun with Numbers (20...

  • 1023 Have Fun with Numbers (20 分

    踩坑之夜:大整数加法 1023题目链接 注意'0'与0 char[]结尾手动加结束符'\0'; 输出开头不带0

  • 自测-4 Have Fun with Numbers(20 分)

    Notice that the number 123456789 is a 9-digit number cons...

  • A1023 Have Fun with Numbers (20分

    /*题意:1给一个数字,然后双倍,看仍是否有这些个数字组成这个数字不超过20个数 解题:1、用散列,散列到每个数,...

  • js对象数组操作 数组操作

    var numbers = [1, 2, 3];var newNumbers1 = numbers.map(fun...

  • have fun

  • Have Fun

    这两天其实写作意愿不是很高,昨天宅在家里几乎没下床,今天早早就起床去办公室然后睡到下午三点半才开始干活… 真的没法...

  • have fun

    北冥有鱼 其名为鲲 鲲之大 一锅炖不下 化而为鸟 其名为鹏 鹏之大 需要两个烤架 一个秘制 一个微辣

  • HAVE FUN

    儿子做了一张粉丝表带去了学校,他说小朋友自愿成为他的粉丝,他也不强迫。 他列了一张表,是五个空格。 他说谁愿意成为...

网友评论

      本文标题:【PAT_1023】Have Fun with Numbers

      本文链接:https://www.haomeiwen.com/subject/nathvftx.html