码迷,mamicode.com
首页 > 其他好文 > 详细

6174问题

时间:2016-05-09 15:45:59      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

描述

  假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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 #include<algorithm>
 3 #include<cstring>
 4 using namespace std;
 5 int main()
 6 {
 7     int n, i, j, sum, s1, s2, s;
 8     int a[4];
 9     cin >> n;
10     while (n--)
11     {
12         cin >> s;
13         sum = 1;
14         while (s != 6174)
15         {
16             for (i = 0; i<4; i++)
17             {
18                 a[i] = s % 10;
19                 s = s / 10;
20             }
21             sort(a, a + 4);
22             s2 = a[3] * 1000 + a[2] * 100 + a[1] * 10 + a[0];
23             s1 = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
24             s = s2 - s1;
25             sum++;
26         }
27         cout << sum << endl;
28     }
29     return 0;
30 }

6174问题

标签:

原文地址:http://www.cnblogs.com/maxin/p/5474055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!