5.1
A1069
题目意思:
输入:
输出:
解题思路:
参考代码:
#include<iostream>
#include<algorithm>
using namespace std;
/*
解题思路:
1.这道题中,也就是除了数字为6174或者0000,剩下的都要输出,在输出完之后可以判断上一次计算结果是否为6174
或者0000,如果是则退出循环(当然循环设置为死循环),否则继续循环
2.注意在输入过程中,字符串s有可能不是4位,所以最左边要补0,而且在循环中计算出来的结果,如果不足4位也要
进行补位
*/
bool cmp(char a, char b)
{
return a>b;
}
int main()
{
string s;
cin >> s;
s.insert(0,4-s.length(),'0');//如果字符串不足4位则左边补0
while(1)
{
sort(s.begin(),s.end());
string smin=s;
int minn=stoi(smin); //字符串排列成最小的值
sort(s.begin(),s.end(),cmp);
string smax=s;
int maxn=stoi(smax); //字符串排列成最大值
int n= maxn-minn;
printf("%04d - %04d = %04d\n",maxn,minn,n);
if(n==0 || n==6174)
break;
s=to_string(n);
s.insert(0,4-s.length(),'0'); //注意在最后算出来的结果中,也有可能不是4位,所以也要左边补0
}
return 0;
}
注意事项:
1.输入完字符串之后和在循环体计算出新的字符串一定要对其进行补位,否则会报错