NYOJ 57(6174问题)

 #include<stdio.h>
#include<stdlib.h>
int c[4];
void fun(int num,int c[])
{
	int i=0;
	while(num>0)/*不能有等号,否则死循环*/
	{
		c[i++]=num%10;
		num/=10;
	}
}
int cmp(const void *a,const void *b)
{
	return *(int *)a-*(int *)b;
}
int main()
{
	int T,num,a,b,count,ans;int i;
	scanf("%d",&T);
	while(T--)
	{
		i=0;count=0;ans=0;
		scanf("%d",&num);
		fun(num,c);
		while(ans!=6174)
		{
		//	printf("%d\n",ans);
			qsort(c,4,4,cmp);
			a=c[0]*1000+c[1]*100+c[2]*10+c[3];/*刚开始数字搞混啦*/
			b=c[3]*1000+c[2]*100+c[1]*10+c[0];
			//printf("%d	%d\n",b,a);
			ans=b-a;
			//for(i=0;i<888888888;i++);
			count++;
			fun(ans,c);
		}
		printf("%d\n",count+1);
	}
	return 0;
}

  

posted @ 2012-05-28 13:41  加拿大小哥哥  阅读(303)  评论(0编辑  收藏  举报