6174问题
来源:互联网 发布:房地产中介软件账号 编辑:程序博客网 时间:2024/05/11 20:12
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
时间限制: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 <algorithm>
using namespace std;
int main()
{
int samples;//测试数据组数
int num[4];
int min = 0, max = 0, count = 0;
int result = max - min, tmp;
cin >> samples;
while (samples--)
{
cin >> tmp;
do
{
for (int i = 0; i < 4; i++)
{
num[i] = tmp % 10;
tmp /= 10;
}
sort(num, num+4);//从小到大排序
min = num[0] * 1000 + num[1] * 100 + num[2] * 10 + num[3];
max = num[3] * 1000 + num[2] * 100 + num[1] * 10 + num[0];
count ++;
//cout << max << "-" << min << "=";
tmp = result = max - min;
//cout << result << endl;
}while (result != 6174);
cout << count+1 << endl;
count = 0;
}
return 0;
}
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题
- 6174问题。
- 防止你的iPhone程序遭盗版(入门篇)
- 新东方王强演讲经典语录
- 英语练习54 Sam's ok
- ios 跳转到某 app 的评价区域、由某应用跳转到其他应用
- javascript 在firebug调试时用console.log的方法
- 6174问题
- HDU 1019 Least Common Multiple
- DOM概述--------------------DHTML简述
- 四元数的运算
- 代码之谜-其实,你不懂代码
- C# FileStream/StreamWriter/StreamReader的区别
- ORACLE10G性能调优学习
- HDU 1020 Encoding
- html 5检查Mobile App是否在线