57-6174问题

内存限制:64MB
时间限制:1000ms
Special Judge: No

accepted:16
submit:31

题目描述:

假设你有一个各位数字互不相同的四位数,把所有的数字从大到小排序后得到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、需要注意的是,要将上一步的结果存起来和下一步进行比较 核心代码:
 while(my_now != my_next)
{
++ cnt;
my_now = my_next;
int temp = my_now, i = ;
while(temp)
{
A[i ++] = temp % ;
temp /= ;
}
sort(A, A+);
int a = A[] + A[] * + A[] * + A[] * ; // a -- max
int b = A[] * + A[] * + A[] * + A[]; // b -- min
my_next = a - b;
}

C/C++代码实现(AC):

 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue>
#include <set> using namespace std; int main()
{ int t;
scanf("%d", &t);
while(t --)
{
int n, cnt = , my_now, my_next, A[];
scanf("%d", &n);
my_now = -, my_next = n;
while(my_now != my_next)
{
cnt ++;
my_now = my_next;
int temp = my_now, i = ;
while(temp)
{
A[i ++] = temp % ;
temp /= ;
}
sort(A, A + );
int a = A[] + A[] * + A[] * + A[] * ; // a -- max
int b = A[] * + A[] * + A[] * + A[]; // b -- min
my_next = a - b;
}
printf("%d\n",cnt);
}
return ;
}

最新文章

  1. [Storm] No data flows into bolt
  2. 在Windows Server 2012 R2上安装SharePoint 2013 with SP1失败,提示没有.net4.5的解决办法
  3. C++中using的作用
  4. Linux性能分析工具的安装和使用
  5. nginx + keepalived 双机热备
  6. Kali安装
  7. poj 3259 Wormholes spfa算法
  8. 【转】Android横竖屏切换问题
  9. !! UML十四图打油诗记忆法
  10. 多线程 NSThread GCD
  11. sizeof和strlen的区别和联系总结
  12. TXDragon的大火题合集
  13. Django基础(路由、视图、模板)
  14. iOS开发之获取当前展示的VC
  15. Logstash替换字符串,解析json数据,修改数据类型,获取日志时间
  16. JavaScript 的if语句和==的判断
  17. HTML汇总以及CSS的一些开端
  18. vue-cli搭建vue项目更新
  19. const char * 转换为char*
  20. Sed basic and practice

热门文章

  1. vc++木马源码免杀一些常用方法
  2. Ubuntu使用中遇到的的一些问题
  3. Java基础(三十)泛型程序(Generic Programming)
  4. vue项目如何在node启动
  5. Web for pentester_writeup之File Include篇
  6. 《Effective Java》 读书笔记(五)使用依赖注入取代原本的资源依赖
  7. 关于Ubuntu10.04磁盘空间不足的问题
  8. Kettle(6.0) 参数方式连接数据库
  9. 五角场之殇。曾与张江、漕河泾、紫竹齐名。如今,上海四大IT科技园是否还在?
  10. 九:写了一下红帽免费的centos6的安装步骤