3N数链问题
来源:互联网 发布:黄金历史查询软件 编辑:程序博客网 时间:2024/06/05 01:00
描述
在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况下我们并不知道哪一类问题可以解决,哪一类问题不可解决。现在我们就有这样一个问题,问题如下:
(1)输入一个正整数n;
(2)把n显示出来;
(3)如果n=1,则结束;
(4)如果n是奇数,则n变为3*n+1,否则变为n/2;
(5)输入第(2)步。
例如对于输入的正整数22,应该有如下数列被显示出来:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1000000的正整数都满足以上推断。
对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。
你的任务是编写一个程序,对于任意一对正整数i和j,给出i与j之间的最长链长,当然这个最长链长是由i与j之间的其中一个正整数产生的。我们这里的i与j之间即包括i和j。
输入
两个正整数i、j从link.in中读入,文件只有一行,即为正整数i和j,i和j之间以一个空格隔开。1≤i≤j≤10000。
输出
要求将你的程序的运行结果以一行输出,即为i和j之间的最长链长。
样例输入
1 10
样例输出
20
#include<iostream>using namespace std;int fun(int a){ int k=1; while(a>1) { if(a%2!=0)a=3*a+1; else a=a/2; k++; } return k;}int main(){ __int64 i,n,m,k,max; while(cin>>n>>m) { k=0;max=0; i=n; while(i<=m) { k=fun(i); if(k>max)max=k; i++; } cout<<max<<endl; } return 0;}
- 3N数链问题
- 3n+1 数链问题
- 1293. 3n+1数链问题
- 1293. 3n+1数链问题
- 3n+1数链问题
- 1293. 3n+1数链问题
- 1293[3n+1数链问题]
- 3n+1 数链问题(数论)
- 1293. 3n+1数链问题
- 3n+1数链问题--递归
- 3n+1数链问题
- 3n+1数链问题
- 3n+1数链问题
- WOJ1314-3n+1数链问题
- [数论][题目]3n+1数链问题
- sicily 1000. 3n+1数链问题
- POJ 1207(3n+1数链问题)
- [1601]3n+1数链问题 sdutOJ
- ACM 1001 Exponentiation 高精度幂浮点型的运算
- POJ2181(DP)
- 简单三步创建文字水彩肖像
- 注册了好久,放上我的第一篇博客吧,写了一个作业小游戏:井字棋
- Qt plugin 的创建和动态加载
- 3N数链问题
- wikioi 糊涂的记者 (最大权匹配+恶心的高精度)
- SSH框架面试题
- 【Centos5.x】DNS
- 备选方案
- JUnit单元测试实践:测试工具类和方法(EmptyUtils)
- asp.net 文本编辑器kindeditor的使用
- C primer plus 读书笔记 (1)
- Oracle子查询的IN、Any、All