1832: 6174问题

                                            1832: 6174问题(ACM)

                                                                          时间限制: 1 Sec  内存限制: 64 MB


#include <stdio.h>              //6174问题 
#include <string.h>
int back(int x){
	int i,j,n,a,b,t;
	char s[10];
	sprintf(s,"%d",x);                                 //将x的数值打印给数组s 
	n=strlen(s);                                       //得到数组长度 
	for(i=0;i<n;i++){                                        //对数组s进行冒泡排序,从大到小,避免逆转时“0”的问题 
		for(j=i+1;j<n;j++){
			if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;}
		}
	}
	sscanf(s,"%d",&a);                                //截取数组s中的全部字符给a(int) 
	for(t=a,b=0;t;t/=10) b=b*10+t%10;                 //利用整数分解,逆转a为b 
	return a-b;                             
}
int main()
{
	int back(int x);
	int cnt,i,m,n;
	scanf("%d",&n);
	while(n--){
		scanf("%d",&m);
		for(cnt=1;m!=6174;cnt++,m=back(m));
		printf("%d\n",cnt);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_30007603/article/details/81142284