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