题目:http://pat.zju.edu.cn/contests/pat-a-practise/1069
题解:
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
char a[5],b[5],c[5];
int main()
{
int ans=0;
int temp;
int x,y;
scanf("%d",&temp);
a[3]=temp%10+'0';
a[2]=(temp/10)%10+'0';
a[1]=(temp/100)%10+'0';
a[0]=(temp/1000)+'0';
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3])
{
printf("%s - %s = 0000\n",a,a);
return 0;
}
for(;;)
{
strcpy(b,a);
sort(a,a+4,greater<char>());
sort(b,b+4);
ans=0;
for(int i=3; i>=0; --i)
{
x=a[i]-'0';
y=b[i]-'0';
if(x<y+ans)
{
c[i]=x+10-y-ans+'0';
ans=1;
}
else
{
c[i]=x-y-ans+'0';
ans=0;
}
}
printf("%s - %s = %s\n",a,b,c);
strcpy(a,c);
if(strcmp(a,"6174")==0)
break;
}
return 0;
}
来源: http://blog.youkuaiyun.com/acm_ted/article/details/20147625