zoukankan      html  css  js  c++  java
  • 6174问题

    描述

    假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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




     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int wei[4],max,min,j,k,n,shu,temp,m,count=1;
     6     cin>>n;
     7     while(n--)
     8     {
     9         cin>>shu;
    10         while(1)
    11         {
    12         
    13         int a=shu/1000;
    14         int b=shu/100-a*10;
    15         int d=shu%10;
    16         int c=(shu%100-d)/10;
    17 
    18         wei[0]=a;
    19         wei[1]=b;
    20         wei[2]=c;
    21         wei[3]=d;
    22 
    23         for(int j=0;j<4;j++)
    24         {
    25         for(int k=j+1;k<4;k++)
    26         {
    27         if(wei[j]>wei[k])
    28         {
    29         temp=wei[j];
    30         wei[j]=wei[k];
    31         wei[k]=temp;
    32         }
    33         }
    34         }
    35 
    36 
    37         min = wei[0]*1000+wei[1]*100+wei[2]*10+wei[3];
    38         max = wei[3]*1000+wei[2]*100+wei[1]*10+wei[0];
    39         
    40         m=max-min;
    41         
    42         if(m==shu)
    43         {
    44             cout<<count<<endl;break;
    45         }
    46         else
    47         {
    48             shu=m;count++;
    49         }
    50         }
    51     }
    52 }

    还可以用冒泡和快排,递归~

  • 相关阅读:
    受脑认知和神经科学启发的人工智能
    1分钟爱上管理学
    刻意练习
    课题设计相关
    销售必备心灵鸡汤(转)
    从优秀到卓越
    小记
    何谓成熟?
    三体运动的程序模拟
    行星运动轨迹的程序实现
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4335949.html
Copyright © 2011-2022 走看看