3n+1

[问题描述]

考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2;如果 n 是奇数,把它乘 3 加1。用新得到的值重复上述步骤,直到 n = 1 时停止。例如,n = 22 时该算法生成的序列是:

22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

人们猜想(没有得到证明)对于任意整数 n,该算法总能终止于 n = 1。这个猜想对于至少 1 000 000内的整数都是正确的。

对于给定的 n,该序列的元素(包括 1)个数被称为 n 的循环节长度。在上述例子中,22 的循环节长度为 16。输入两个数 i 和 j,你的任务是计算 i 到 j(包含 i 和 j)之间的整数中,循环节长度的最大值。

[输入]

输入每行包含两个整数 i 和 j。所有整数大于 0,小于 1 000 000。

[输出]

对于每对整数 i 和 j,按原来的顺序输出 i 和 j,然后输出二者之间的整数中的最大循环节长度。这三个整数应该用单个空格隔开,且在同一行输出。对于读入的每一组数据,在输出中应位于单独的一行。

[样例输入]

1 10

100 200

201 210

900 1000

[样例输出]

1 10 20

100 200 125

201 210 89

900 1000 174

import java.util.Scanner;

public class Demo9循环长度 {
static int n=0,m=0,count=1,max=0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
n=sc.nextInt();
m = sc.nextInt();
for (int i = n; i <=m; i++) {
f(i);
}
System.out.println();
System.out.println(n+" "+m+" "+max); max=0;
}
}
public static void f(int n){
while(1!=n){
if(n%2==0) n/=2;
else n=3*n+1;
count++;
}
max = Math.max(count, max);
count=1; } }

最新文章

  1. mybatis多表查询
  2. [C#6] 7-索引初始化器
  3. android Activity的启动模式
  4. jdk和tomcat环境部署
  5. HDU 1104 Remainder
  6. 牛客_剑指offer_重建二叉树,再后续遍历_递归思想_分两端
  7. Linux学习之wget命令
  8. MFC全局函数开局——AfxGetApp解剖
  9. cddiv/数组维护
  10. .NetCore获取Json和Xml格式的配置信息
  11. 【SSH系列】初识spring+入门demo
  12. python统计字词练习
  13. thinkphp——通过在线编辑器添加的内容在模板里正确显示(只显示内容,而不是html代码)
  14. 启动node程序报错:event.js:183 throw er; // unhandled &#39;error&#39; event
  15. python 绝版线程池
  16. struts1(一)流程分析
  17. mysql中间件研究(Atlas,cobar,TDDL)[转载]
  18. Adobe Acrobat Reader DC 离线安装包
  19. RAC1——Clusterware概念简介1
  20. RHCSA-day1

热门文章

  1. Pytest 单元测试框架
  2. Vue 做的项目在IE下面打开一片空白解决方法
  3. 【hdu1007】最近点对
  4. ipad4密码忘记锁定了如何破解
  5. spring junit--基础配置
  6. PAT1027 Colors in Mars (20分) 10进制转13进制
  7. c#word文档输出
  8. 学会阅读源码后,我觉得自己better了
  9. 接口testing需要的技能
  10. nginx配置之虚拟主机功能