测试点找了半小时全给你找齐了,拿了留个评论😄。
测试点:
测试点2: 1000。每次运算都要补0因为1000 - 0001 = 0999,如果不补0就会出错(我就是卡在这)。
其他测试点:有可能是小于1000的数, 1。 测试点5:输入的就是6174。
#include <bits/stdc++.h>
using namespace std;
bool cmp (char a, char b) {
return a > b;
}
int main() {
int flag = 1;
string s, s1;
cin >> s;
s.insert(0, 4 - s.length(), '0');
do {
sort(s.begin(), s.end(), cmp);
s1 = s;
reverse(s1.begin(), s1.end());
int a = stoi(s);
int b = stoi(s1);
string ans = to_string (a - b);
ans.insert(0, 4 - ans.length(), '0');
cout << s << " - " << s1 << " = " << ans << endl;
s = ans;
}while (s != "6174" && s != "0000");
}