问题:1069. The Black Hole of Numbers (20)
#include<stdio.h> #define Up 1 #define Down -1 int Trans(int n,int state); int main() { int n; scanf("%d",&n); while(1) { printf("%04d - %04d",Trans(n,Down),Trans(n,Up)); n=Trans(n,Down)-Trans(n,Up); printf(" = %04d\n",n); if(n==6174||n==0)break; } } int Trans(int n,int state) { int m=n,a[4],i=0,j,k=4,num=0; while(k) { a[i++]=m%10; m/=10; k--; } for(i=0;i<4;i++) { for(j=1;j<4-i;j++) { if(a[j-1]<a[j]) { int temp; temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } } } if(state==Down) { for(i=0;i<4;i++) { num=num*10+a[i]; } } else { for(i=3;i>=0;i--) { num=num*10+a[i]; } } return num; }