62 数字黑洞
作者: Turbo时间限制: 1S章节: 基本练习(数组)
问题描述 :
任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数中含有0,则得到的数不足四位);
3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后一定会得到的结果是6174。
比如:4312 3087 8352 6174,经过三次变换,得到6174
输入说明 :
一个四位整数,输入保证四位数字不全相同
输出说明 :
一个整数,表示这个数字经过多少次变换能得到6174
输入范例 :
4312
输出范例 :
3
代码:
//每次把number中的各个位置上的数字分解到temp中,排序之后,通过遍历来构成max和min,max-min来构造新的number
#include
#include
#include
#include
#include
#include
int cmp(const void*_a,const void*_b)
{int *a=(int*)_a;int *b=(int*)_b;return *a-*b;
}
int main()
{int n,i,count=0;scanf("%d",&n);int num=n;while(num!=6174){i=0;int max=0,min=0;int number=num;int temp[4]={0};while(number>0){temp[i++]=number%10;number=number/10;}qsort(temp,4,sizeof(int),cmp);for(int j=0;j<4;j++){max=max*10+temp[4-j-1];min=min*10+temp[j];}num=max-min;count++;}printf("%d\n",count);return 0;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
