NYOJ 57 6174问题
2015-06-10 17:33
627 查看
啊哈!初次知道6174,还是在高中时,一本科普书上讲的。作为回忆,就把这道题AC了。
水题,不过去掉下面的注释,可以很直观的看到过程。
最后!!!为什么我用memset函数总是忘写#include<cstring>头文件!!!
时间限制: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行每行都写一个各位数字互不相同的四位数
输出经过多少次上面描述的操作才能出现循环
样例输入
样例输出
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int ans[4];
bool cmp(int lhs, int rhs)
{
return lhs>rhs;
}
int mysort(int x,int s)
{
int i,j;
memset(ans,0,sizeof(ans));
for(i=0,j=10000;i<4;i++)
{
j/=10;
ans[i]=x/j%10;
}
if(s)
sort(ans,ans+4,cmp);
else
sort(ans,ans+4);
/*
for(i=0;i<4;i++)
cout<<ans[i]<<" ";
cout<<endl;
*/
x=0;
for(i=0,j=10000;i<4;i++)
{
j/=10;
x+=ans[i]*j;
}
return x;
}
int main()
{
int n,m,lhs,rhs,tmd;
cin>>n;
while(n--)
{
cin>>m;
tmd=1;
while(m!=6174)
{
lhs=mysort(m,0); //升序
rhs=mysort(m,1); //降序
m=rhs-lhs;
++tmd;
}
cout<<tmd<<endl;
}
return 0;
}
水题,不过去掉下面的注释,可以很直观的看到过程。
最后!!!为什么我用memset函数总是忘写#include<cstring>头文件!!!
时间限制: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 <cstring>
#include <algorithm>
using namespace std;
int ans[4];
bool cmp(int lhs, int rhs)
{
return lhs>rhs;
}
int mysort(int x,int s)
{
int i,j;
memset(ans,0,sizeof(ans));
for(i=0,j=10000;i<4;i++)
{
j/=10;
ans[i]=x/j%10;
}
if(s)
sort(ans,ans+4,cmp);
else
sort(ans,ans+4);
/*
for(i=0;i<4;i++)
cout<<ans[i]<<" ";
cout<<endl;
*/
x=0;
for(i=0,j=10000;i<4;i++)
{
j/=10;
x+=ans[i]*j;
}
return x;
}
int main()
{
int n,m,lhs,rhs,tmd;
cin>>n;
while(n--)
{
cin>>m;
tmd=1;
while(m!=6174)
{
lhs=mysort(m,0); //升序
rhs=mysort(m,1); //降序
m=rhs-lhs;
++tmd;
}
cout<<tmd<<endl;
}
return 0;
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- C++中拷贝构造函数的应用详解
- C++中引用(&)的用法与应用实例分析
- C++使用CriticalSection实现线程同步实例
- C++智能指针实例详解
- 解析C++ 浮点数的格式化输出