#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int num[2000],count;
int getNext(int x)
{
int a,b,n;
char s[10];
sprintf(s,"%d",x);
n=strlen(s);
//冒泡排序
for(int i=0; i<n; i++)
{
for(int j=i+1; j<n; j++)
if(s[i]>s[j])
{
char t = s[i];
s[i] = s[j];
s[j] = t;
}
}
sscanf(s,"%d",&b);
//字符串反转
for(int i=0; i<n/2; i++)
{
char t=s[i];
s[i] = s[n-1-i];
s[n-1-i] = t;
}
sscanf(s,"%d",&a);
return a-b;
}
int main()
{
scanf("%d",&num[0]);
printf("%d",num[0]);
count=1;
for(;;)
{
num[count] = getNext(num[count-1]);
printf(" --> %d",num[count]);
{
if(num[i]==num[count])
{
found=1;
break;
}
}
if(found==1)
break;
count++;
}
return 0;
}
#include <stdlib.h>
#include <string.h>
int num[2000],count;
int getNext(int x)
{
int a,b,n;
char s[10];
sprintf(s,"%d",x);
n=strlen(s);
//冒泡排序
for(int i=0; i<n; i++)
{
for(int j=i+1; j<n; j++)
if(s[i]>s[j])
{
char t = s[i];
s[i] = s[j];
s[j] = t;
}
}
sscanf(s,"%d",&b);
//字符串反转
for(int i=0; i<n/2; i++)
{
char t=s[i];
s[i] = s[n-1-i];
s[n-1-i] = t;
}
sscanf(s,"%d",&a);
return a-b;
}
int main()
{
scanf("%d",&num[0]);
printf("%d",num[0]);
count=1;
for(;;)
{
num[count] = getNext(num[count-1]);
printf(" --> %d",num[count]);
int found=0;
//判断新产生的数是否在之前出现过
{
if(num[i]==num[count])
{
found=1;
break;
}
}
if(found==1)
break;
count++;
}
return 0;
}