当前位置: 首页 > 工具软件 > Magic > 使用案例 >

Magic

鲁炳
2023-12-01

Magic

Time Limit : 1000 MS Memory Limit : 65536 KB

Description
题目描述

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

Sample Input

Sample Output


题意:输入一个四位数,将其数码按升序和降序分别排列后相减 ,求需要通过几次这样的操作可以得到6174。


分析:将四位数的数码分开,使用sort函数对数码进行排序,进而得到四位数组成的最大值和最小值,求出其差值。若该值为6174,则跳出循环。


呈上lowlow的代码~~~~

#include <stdio.h>
#include <algorithm>
using namespace std;
int main()
{
    int n;
    while(1){
        scanf("%d",&n);
        if(n==0) break;
        else{
           int t[4],cnt=0;
           while(n!=6174){
                t[0]=n/1000;
                t[1]=n%1000/100;
                t[2]=n%100/10;
                t[3]=n%10;
                sort(t,t+4);
                int a=t[0]+t[1]*10+t[2]*100+t[3]*1000;
                int b=t[0]*1000+t[1]*100+t[2]*10+t[3];
                n=a-b;
                cnt++;
            }
            printf("%d\n",cnt);
        }

    }

}
 类似资料: