题目链接
思路
主要坑可能是格式问题,输出的时候要都按照四位数字输出,即要补0,但如果你测试点2、3、4没过的话可能是因为没考虑输入的数可能不足四位(虽然题目中说是四位数,挺离谱的)。。。。。。
测试样例
输入
10
输出
1000 - 0001 = 0999
9990 - 0999 = 8991
9981 - 1899 = 8082
8820 - 0288 = 8532
8532 - 2358 = 6174
AC代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<map>
#include<stack>
using namespace std;
typedef long long ll;
const int maxn=1e6;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int num;
int n[4];
cin>>num;
n[0]=num/1000;
n[1]=(num/100)%10;
n[2]=(num/10)%10;
n[3]=num%10;
if(n[0]==n[1]&&n[0]==n[2]&&n[0]==n[3])
cout<<num<<" - "<<num<<" = 0000"<<endl;
else
{
int a,b,c;
while(1)
{
sort(n,n+4,cmp);
a=n[0]*1000+n[1]*100+n[2]*10+n[3];
b=n[3]*1000+n[2]*100+n[1]*10+n[0];
c=a-b;
cout<<n[0]<<n[1]<<n[2]<<n[3]<<" - "<<n[3]<<n[2]<<n[1]<<n[0]<<" = ";
n[0]=c/1000;
n[1]=(c/100)%10;
n[2]=(c/10)%10;
n[3]=c%10;
cout<<n[0]<<n[1]<<n[2]<<n[3]<<endl;
if(c==6174)
break;
}
}
return 0;
}