题目描述
计算机科学中的问题通常被归类为属于某一类问题(例如,NP,不可解,递归)。在这个问题中,您将分析算法的属性,该算法的分类对于所有可能的输入都是未知的。

考虑下面的算法:

1.输入n

2.输出n

3.如果n = 1,则停止

4.如果n是奇数,则n=3n + 1

5.否则n=n / 2

6.返回第2步

给定输入22,将输出以下序列的数字22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

据推测,使用上述算法任何输入值将终止(当输出1时)。尽管算法简单,但是不知道这个猜想是否为真。

然而,已经验证了所有整数n,使得0 <n <1,000,000(并且实际上,比这更多的数目也成立)。

给定输入n,可以确定输出的数字的数量(包括1)。对于给定的n,这被称为n的周期长度。在上面的例子中,22的周期长度为16。

对于任何两个数字i和j,您将确定i和j之间的所有数字的最大循环长度。

输入
输入将由一系列整数对i和j组成,每行一对整数。所有整数将小于1,000,000和大于0。

你应该处理所有的整数对,并且对每个对确定i和j之间的所有整数的最大循环长度。

您可以假设没有操作溢出32位整数。

输出
对于每对输入整数i和j,应输出i,j和i和j之间的整数的最大循环长度。这三个数字应该由至少一个空格分隔,一行上的所有三个数字和每行输入的一行输出。整数i和j必须以与它们在输入中出现的顺序相同的顺序出现在输出中,并且后跟最大循环长度(在同一行上)。

样例输入
1 10
100 200
201 210
900 1000
样例输出
1 10 20
100 200 125
201 210 89
900 1000 174

#include "iostream"
using namespace std;
int main()
{
int m,n,max,tmp,cnt;
while(cin >> m >> n)
{max = ;
for(int i=(m>n? n:m);i<=(m>n? m:n);++i)
{
tmp = i;
cnt = ;
while(tmp!=)
{
if(tmp%==) tmp = tmp/;
else tmp = tmp* + ;
cnt++;
}
(max < cnt? max=cnt : max = max);
}
cout << m << " " << n << " " << max << endl;
}
}

the prblem 3n+1的更多相关文章

  1. - > code vs 3038 3n+1问题(递归)

    3038 3n+1问题  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 白银 Silver 题解   题目描述 Description 3n+1问题是一个简单有趣而又没有解决的数 ...

  2. 害死人不偿命的(3n+1)猜想

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...

  3. 1001. 害死人不偿命的(3n+1)猜想 (15)

    1001. 害死人不偿命的(3n+1)猜想 (15) 较简单,直接代码实现: #include <cstdio> int main() { int n; scanf("%d&qu ...

  4. PAT 乙级 1005. 继续(3n+1)猜想 (25)

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B   卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情 ...

  5. 1293. 3n+1数链问题 2016 12 23

    /* 1293. 3n+1数链问题 Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description 在计算机科学上,有很多类问题是无法解 ...

  6. 3n+1b 备忘录方法

    题目详情 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数学家大会上公布了这个猜 ...

  7. PAT 1001. 害死人不偿命的(3n+1)猜想 (15)

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在1950年的世界 ...

  8. UVa 100 - The 3n + 1 problem(函数循环长度)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...

  9. 烟大 Contest1024 - 《挑战编程》第一章:入门 Problem A: The 3n + 1 problem(水题)

    Problem A: The 3n + 1 problem Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 14  Solved: 6[Submit][St ...

随机推荐

  1. 使用CocoaPods更新第三方库出错的解决办法

    使用CocoaPods更新第三方库出错的解决办法 执行完pod install或pod update之后,控制台抛出以下警告信息: [!] The xx [Debug] target override ...

  2. nsrunloop与模式

    scrollview的模式切换:退出原来的模式使用新模式. 2018-04-18 18:16:41.208113+0800 CEMonitor[5014:410604] kCFRunLoopDefau ...

  3. Unity3d 拖拽脚本报错 Can’t add script

    报错截图: 报错原因: c#文件创建以后再改名,会报错找不到对应类. 类名和文件名要一致才行.(这个是Unity要求,c#本身不要求一致)

  4. 【HiJ1m】在NOIP2017前写过的有用的东西汇总

    http://www.cnblogs.com/Elfish/p/7544623.html 高级树状数组 http://www.cnblogs.com/Elfish/p/7554420.html BST ...

  5. CF487E Tourists(圆方树+堆+链剖)

    本题解并不提供圆方树讲解. 所以不会圆方树的出门右转问yyb 没有修改的话圆方树+链剖. 方点的权值为点双连通分量里的最小值. 然后修改的话圆点照修,每一个方点维护一个小根堆. 考虑到可能被菊花卡死. ...

  6. CF1042F Leaf Sets (贪心+树上构造)

    题目大意:给你一棵树,让你对叶节点分组,保证每组中,任意两个叶节点之间的距离不大于K,求最小的组数 手动yy的贪心竟然对的 对于每个节点,维护一个$ma[i]$,表示在$i$节点的子树内 未被分组的叶 ...

  7. linux查看前几条命令记录

    1.按上下箭头键2.history|more分页显示3.vi /etc/profile找HISTSIZE=1000,说明你最多能存1000条历史记录.4.!!执行最近执行的命令5.history|he ...

  8. Lvs+heartbeat高可用高性能web站点的搭建

    这是我们公司在实际的生产环境当中使用的一套东西,希望对大家有所帮助(实际的公网ip,我已经做了相应的修改): 说明:每台服务器需要有两块网卡:eth0连接内网的交换机,用私网ip,实现服务器间内部访问 ...

  9. MyBatis学习总结(3)——优化MyBatis配置文件中的配置

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1 ...

  10. 为什么要重写toString()方法

    因为在System.out.println(类的对象名)时,类的对象名是个引用,如果不重写,就输出引用地址. 其实实际是这样的System.out.println(类的对象名.toString()), ...