PTA 乙级 1019 数字黑洞 (20分)

 调库大法,将输入的数字转化为字符串(to_string),然后进行排序(sort进行从小到大的排序,reverse对进行sort之后的数字进行逆序)

(C++中,可以进行 类=类 的操作,实现复制,而java不可以,java需要特殊的函数来进行类的复制)

注意:

  • 每个数字必须输出四位,所以需要0补全
  • 有直接输入n = 6174的情况,所以要用do-while循环(至少执行一次)
 1 #include<iostream>
 2 #include<string>
 3 #include<algorithm>
 4 #include<iomanip>
 5 
 6 using namespace std;
 7 
 8 string getmaxmin(int n, bool flag) {
 9     string num;
10     num = to_string(n);                //数字转化为字符串
11     while (num.size() < 4) {
12         num += '0';
13     }
14     sort(num.begin(), num.end());    //sort进行从小到大的排序(min)
15     if (flag == 1) {
16         reverse(num.begin(), num.end());//reverse对排序结果进行逆序(max)
17     }
18     return num;
19 }
20 
21 int main() {
22     int n = 0;
23     string max, min;
24     cin >> n;
25     do{
26         max = getmaxmin(n, 1);
27         min = getmaxmin(n, 0);
28         n = stoi(max) - stoi(min);    //字符串转化为数字
29         cout << max << " - " << min << " = " << 
30             setw(4) << setfill('0') << n << endl;    //需要输出位补齐
31     } while (n != 6174 && n != 0);
32     return 0;
33 }

一直在学java,C++没接触多少,调库什么的都是现学现找的,有不对的地方还请指正

原文地址:https://www.cnblogs.com/SCP-514/p/13252902.html