code1 14分
#include<iostream>
#include<string>//直接对string排序
#include<algorithm>
using namespace std;
bool cmp(char a, int b) {return a > b;}//降序排列
int main()
{
string s;
cin >> s;
int m=0,n=0;
while ((n - m) != 6174) {
sort(s.begin(), s.end());
m = stoi(s);//升序
sort(s.begin(), s.end(), cmp);
n = stoi(s);//降序
if (m == n) {
printf("%04d - %04d = %04d\n", n, m, n - m);
break;
}
printf("%04d - %04d = %04d\n", n, m, n - m);
s = to_string(n - m);
}
return 0;
}
bug在于没有对不足4位的数字进行处理
code2 20分
#include<iostream>
#include<string>//直接对string排序
#include<algorithm>
using namespace std;
bool cmp(char a, int b) {return a > b;}//降序排列
int main()
{
string s;
cin >> s;
s.insert(0, 4 - s.length(), '0');
int m=0,n=0;
while ((n - m) != 6174) {
sort(s.begin(), s.end());
m = stoi(s);//升序
sort(s.begin(), s.end(), cmp);
n = stoi(s);//降序
if (m == n) {
printf("%04d - %04d = %04d\n", n, m, n - m);
break;
}
printf("%04d - %04d = %04d\n", n, m, n - m);
s = to_string(n - m);
s.insert(0, 4 - s.length(), '0');
}
return 0;
}
注意点
1.对不足四位的数的处理,insert函数的使用。
2.直接对string进行排序,用sort函数