#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(char a, char b) {return a > b;}
int main() {
string s;
cin >> s;
s.insert(0, 4 - s.length(), '0'); //用来给不足4位的时候前面补0
do {
string a = s, b = s;
sort(a.begin(), a.end(), cmp); //按非递增排序
sort(b.begin(), b.end()); //按非递减排序
int result = stoi(a) - stoi(b);
s = to_string(result); //将得到的新数字转化为字符串
s.insert(0, 4 - s.length(), '0'); //用来给不足4位的时候前面补0
cout << a << " - " << b << " = " << s << endl;
} while (s != "6174" && s != "0000");
return 0;
}
分析:有一个测试用例注意点,如果当输入N值为6174的时候,依旧要进行下面的步骤,直到差值为6174才可以~所以用do while语句,无论是什么值总是要执行一遍while语句,直到遇到差值是0000或6174~
本文介绍了一种基于C++实现的6174猜想算法,通过比较和交换字符串中的字符,实现对任意四位数的迭代操作,直至达到6174或0000。代码使用了dowhile循环确保即使输入为6174也会进行至少一次迭代。
784

被折叠的 条评论
为什么被折叠?



