xtu oj 1191 Magic
2023-12-14 18:25:58
    		题目描述
6174是一个神奇的数字,你将一个4位数n(只要这4位数码不完全一样)所有数码按升序和降序分别得到A和B,取n=B-A,如果n不为6174的话,继续迭代上面的过程,直到n为6174。 比如
no. n A B 0 1000 0001 1000 1 0999 0999 9990 2 8991 1899 9981 3 8082 0288 8820 4 8532 2358 8532 5 6174
请问需要迭代多少次才能达到6174?
输入
每行一个4位整数n,并且n的所有数码不完全相同。如果n=0表示输入结束,不需要处理。
输出
每行输出一个样例的结果。
样例输入
1000 6174 0
样例输出
5 0
AC代码
#include<stdio.h>
int main()
{
	int n;
	while(scanf("%d",&n)!=EOF){
		if(n==0)break;
		int cnt=0,flag=1;
		while(flag){
		  if(n==6174){
			flag=1;
			break;
	     }
		 int t=n;
		 int a[5]={};//升序排列 
		 int i,j,k=0,tem1;
		 while(t!=0){
		 	a[k]=t%10;
		 	t/=10;
		 	k++;
		 }
		 for(i=0;i<3;i++){
			for(j=i+1;j<4;j++){
				if(a[i]>a[j]){
					tem1=a[i];
					a[i]=a[j];
					a[j]=tem1;
				}
			}
		}
		 int A=a[3]+a[2]*10+a[1]*100+a[0]*1000;
		 int B=a[0]+a[1]*10+a[2]*100+a[3]*1000;
		 n=B-A;
		 cnt++;
	}
	printf("%d\n",cnt);
}
 } 利用循环求解重复问题。
    			文章来源:https://blog.csdn.net/m0_75005390/article/details/134995258
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!