• 南阳理工57---6174问题


    6174问题

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
     
    描述

    假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到a,从小到大后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087、8730-378=8352、8532-2358=6174,又回到了它自己!现在要你写一个程序来判断一个四位数经过多少次这样的操作能出现循环,并且求出操作的次数

    比如输入1234执行顺序是1234->3087->8352->6174->6174,输出是4

     
    输入
    第一行输入n,代表有n组测试数据。
    接下来n行每行都写一个各位数字互不相同的四位数
    输出
    经过多少次上面描述的操作才能出现循环
    样例输入
    1
    1234
    样例输出
    4
    来源
    [张洁烽]原创
    上传者
    张洁烽
    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    void fun(int m,int a[])
    {
        int count=0;
        while(m>0)
        {
            a[count++]=m%10;
            m=m/10;
        }
        sort(a,a+count);
    }
    int main()
    {
        int n,m;
        int a[100];
        cin>>n;
        while(n--)
        {
            int t=0;
            cin>>m;
            while(1)
            {
                fun(m,a);
                t++;
                m=(a[3]*1000+a[2]*100+a[1]*10+a[0])-(a[0]*1000+a[1]*100+a[2]*10+a[3]);
                if(m==6174)
                    break;
            }
            cout<<t+1<<endl;
    
        }
        return 0;
    }
    

      

  • 相关阅读:
    正则表达式基础以及应用
    日常使用之css篇
    echarts的使用总结
    &#65279导致页面顶部空白一行
    vue.js单页面应用实例
    BFC的外边距折叠
    .net 跳出Frameset框架
    Cache缓存使用
    Kafka集群搭建及安全机制手册
    PHP学习笔记
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4248727.html
Copyright © 2020-2023  润新知