PAT Basic Level 1019. 数字黑洞(20)

来源:互联网 发布:微信卖看片软件是什么 编辑:程序博客网 时间:2024/06/01 07:14

【来源】

1019.数字黑洞(20)

【分析】

按照题意直接码代码即可。需要注意两点:

  1. 输出数的时候需要注意不足四位数要用0补齐;
  2. 注意输入为6174的情况。

【源码】

#include <iostream>#include <string>#include <algorithm>using namespace std;string tostring(int n){    string s;    if (n < 10){        char cn = n + '0';        s = "000";        s += cn;    }    else if (n < 100){        int shi = n / 10;        int ge = n % 10;        char cge = ge + '0';        char cshi = shi + '0';        s = "00";        s += cshi;        s += cge;    }    else if (n < 1000){        int bai = n / 100;        int shi = (n - bai * 100)/10;        int ge = n % 10;        char cge = ge + '0';        char cshi = shi + '0';        char cbai = bai + '0';        s = "0";        s += cbai;        s += cshi;        s += cge;    }    else if (n < 10000){        int qian = n / 1000;        int bai = (n - qian*1000) / 100;        int shi = (n - bai * 100 - qian * 1000) / 10;        int ge = n % 10;                char cge = ge + '0';        char cshi = shi + '0';        char cbai = bai + '0';        char cqian = qian + '0';        s = "";        s += cqian;        s += cbai;        s += cshi;        s += cge;    }    return s;}int toint(string s){    int value = 0;    for (int i = 0; i < s.length(); ++i){        int digit = s[i] - '0';        value = value * 10 + digit;    }    return value;}int main(){    int n;    cin >> n;    if (n == 6174){        cout << "7641 - 1467 = 6174" << endl;    }    else{        string s = tostring(n);        string ss(s);        while (ss != "6174"){            string small(ss);            string big(ss);            sort(small.begin(), small.end());            sort(big.rbegin(), big.rend());            int result = toint(big) - toint(small);            cout << big << " - " << small << " = " << tostring(result) << endl;            ss = tostring(result);            if (ss == "0000"){                break;            }        }    }      system("pause");    return 0;}
【点评】

此题为简单的模拟题。考察字符串处理、简单排序等基础知识。


0 0