编程题:h0023. 3 n + 1 问题
计算机科学中的问题通常被归类为属于某一类问题(例如,NP、不可解、递归)。在这个问题中,您将分析一个算法的属性,该算法的分类对于所有可能的输入都是未知的。
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
给定输入 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的循环长度。在上面的例子中,22 的循环长度是 16。
对于任何两个数字i和j ,请您确定i和 j之间所有数字的最大循环长度。
### 输入格式:
输入将由一系列整数对i和j 组成,每行一对整数。所有整数都将小于 10,000 且大于 0。
您应该处理所有整数对,并为每对确定i和j之间(包括i和j )所有整数的最大循环长度。
### 输出格式:
对于每对输入整数i和j,您应该输出i、j以及介于i和j之间(包括i和j )的整数的最大循环长度 。这三个数字应该至少用一个空格隔开,所有三个数字在一行上,每一行输入有一行输出。整数 i和j出现在输出中的顺序必须与它们出现在输入中的顺序相同,并且后面应该是最大循环长度(在同一行)。
### 输入样例:
in
1 1
2 5
1 10
### 输出样例:
out
1 1 1
2 5 8
1 10 20
答案:若无答案欢迎评论
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
给定输入 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的循环长度。在上面的例子中,22 的循环长度是 16。
对于任何两个数字i和j ,请您确定i和 j之间所有数字的最大循环长度。
### 输入格式:
输入将由一系列整数对i和j 组成,每行一对整数。所有整数都将小于 10,000 且大于 0。
您应该处理所有整数对,并为每对确定i和j之间(包括i和j )所有整数的最大循环长度。
### 输出格式:
对于每对输入整数i和j,您应该输出i、j以及介于i和j之间(包括i和j )的整数的最大循环长度 。这三个数字应该至少用一个空格隔开,所有三个数字在一行上,每一行输入有一行输出。整数 i和j出现在输出中的顺序必须与它们出现在输入中的顺序相同,并且后面应该是最大循环长度(在同一行)。
### 输入样例:
in
1 1
2 5
1 10
### 输出样例:
out
1 1 1
2 5 8
1 10 20
答案:若无答案欢迎评论