PAT A1069 The Black Hole of Numbers(C++)

PAT甲级目录 | PAT乙级目录

题目描述

原题地址:A1069 The Black Hole of Numbers
中文版:B1019 数字黑洞

解题思路

字符串处理。

易错点:

  • 输入的数字和中间计算得到的数字不一定是四位数,所以要转换一下

也许陌生的知识点

  • sort(A.begin(), A.end());
    • 排序函数,实现 [first, last) 范围内的排序
    • 所需头文件: algorithm
  • reverse(B.begin(), B.end());
    • 逆转函数,实现C++容器(数组、队列、字符串)[first, last) 范围内元素逆转
    • 所需头文件: algorithm
  • y = stoi(x)
    • 实现将字符串转换成对应字面的整数
    • 需要的头文件:string

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <algorithm>
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
string A, B;
int S = -1;
cin >> A;
while(S != 6174 && S != 0){
while(A.length() < 4) A += '0';
sort(A.begin(), A.end());
B = A;
reverse(B.begin(), B.end());
S = stoi(B) - stoi(A);
printf("%04d - %04d = %04d\n", stoi(B), stoi(A), S);
A = to_string(S);
}
return 0;
}