发布网友 发布时间:2023-01-19 18:51
共1个回答
热心网友 时间:2023-11-24 17:26
#include<stdio.h>
int sub(int i)
{
int p,k,j,h,max,min,a[5];
a[1]=i/1000;a[2]=(i/100)%10;
a[3]=(i%100)/10;a[4]=i%10;
for(k=1;k<=3;k++)
for(j=k+1;j<=4;j++)
if(a[k]<a[j])
{ h=a[k];a[k]=a[j];a[j]=h; }
max=a[1]*1000+a[2]*100+a[3]*10+a[4];
min=a[4]*1000+a[3]*100+a[2]*10+a[1];
p=max-min;
if(p<1000 && p/100==(p/10)%10 && p/100==p%10)
p=0;
return (p);
}
int main()
{
int n,n1,y,i,m;
printf("\n所有4位数经'重排求差'操作,可至6174或0.");
for(y=0,n=1000;n<=9999;n++)
{
i=n;m=0;
while(i!=6174 && i!=0)
{ i=sub(i);m++; }
if(m>y) { y=m;n1=n; }
}
printf("\n当n=%d时,最多%d次可至6174或0:",n1,y);
printf("\n%d",n1);
i=n1;
while(i!=6174 && i!=0)
{ i=sub(i);printf("->%d",i); }
return 0;
}