The 3n+1问题
来源:互联网 发布:flexible.js使用教程 编辑:程序博客网 时间:2024/06/06 05:32
描述:
Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.
Consider the following algorithm:
1. input n
2. print n
3. if n = 1 then STOP
4. if n is odd then n <- 3n + 1
5. else n <- n / 2
6. GOTO 2
Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.)
Given an input n, it is possible to determine the number of numbers printed (including the 1). For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.
For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.
Consider the following algorithm:
1. input n
2. print n
3. if n = 1 then STOP
4. if n is odd then n <- 3n + 1
5. else n <- n / 2
6. GOTO 2
Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.)
Given an input n, it is possible to determine the number of numbers printed (including the 1). For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.
For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.
You should process all pairs of integers and for each pair determine the maximum cycle length over all integers between and including i and j.
You can assume that no opperation overflows a 32-bit integer.
1 10100 200201 210900 1000
1 10 20100 200 125201 210 89900 1000 174
package 递归练习;import java.util.Scanner;public class The 3n+1问题 { static int f(int m){ int num=0; while(m>1){ if(m%2==1){ m=3*m+1; num++; } else{ m/=2;num++; } } return num+1; }public static void main(String[] args) {// TODO Auto-generated method stub Scanner scan=new Scanner(System.in); while(scan.hasNext()){ int m=scan.nextInt(); int n=scan.nextInt(); int a=Math.min(m,n); //注意题目给定的m,n大小不一定,得自己判断!!!(有坑) int b=Math.max(m,n); int max=0; for(int i=a;i<=b;i++){ if(f(i)>max) max=f(i); } System.out.println(m+" "+n+" "+max); }}}
注意坑就ok了......
阅读全文
0 0
- The 3n+1问题
- [问题]HDOJ1032 The 3n + 1 problem
- HDU-The 3n + 1 problem (3n + 1问题)
- The 3n+1
- 1.6.1 3n+1问题 The 3n+1 problem
- UVa Problem 100 The 3n+1 problem (3n+1 问题)+1 问
- UVa Problem 100 The 3n+1 problem (3n+1 问题)
- UVa Problem 100 The 3n+1 problem (3n+1 问题)
- UVA 100 - The 3n+1 problem (3n+1 问题)
- UVa 100 3n+1问题 The 3n + 1 problem
- A1031 The 3n+1 problem (3n+1 问题)
- The 3n + 1 problem
- The 3n+1 Problem
- The 3n + 1 problem
- The 3n + 1 problem
- The 3n + 1 problem
- The 3n + 1 problem
- The 3n + 1 problem
- 计算机网络面试题汇总(1)
- 阿里云 3306端口开放
- 第一次写亲自看别人新闻的项目的实现经历(转载)
- 联系人查询InCallUI显示
- C语言学习小结(指针、数组、函数)
- The 3n+1问题
- 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)
- 关于阿里的自动打包工具
- 基于谱聚类方法的海康威视日线聚类
- 圆盘
- “libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误
- Markdown
- 一只爬虫带你看世界【6】
- (五)操作系统安全概念和设计思想