题目: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; }