NYOJ 57 6174问题
2016-04-13 15:13
288 查看
啊哈!初次知道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行每行都写一个各位数字互不同样的四位数
输出经过多少次上面描写叙述的操作才干出现循环
例子输入
例子输出
作为回顾。就把这道题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行每行都写一个各位数字互不同样的四位数
输出经过多少次上面描写叙述的操作才干出现循环
例子输入
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; }
相关文章推荐
- jdk动态代理
- 实验八:进程的切换和系统的一般执行过程
- Android之NDK开发
- 响应式布局知识点总结
- 【程序员分享】学习ios开发需要掌握的学习方法 get√
- 集成银联3.3.0
- cmd方式的Testng+Appium
- disabled和readonly的区别是什么
- 总结如何实现浮动层,主要是dialog的使用。
- AFNetworking 3.0迁移指南
- 面试题79:抽奖算法实现
- shell 基础
- 学生选课系统以及超市管理系统,正确打开的方法
- 盘点:10款最受欢迎数据可视化工具-JS可视化
- CSS3 Filter的十种特效
- centos6.5安装open-falcon笔记
- Oracle system用户忘记密码的解决方法
- 深入理解JavaScript 中为什么没有重载?
- C语言/C++如何生成随机数
- php自定义分页