我又来求助啦!(这次一定要交我)
pascal吧
全部回复
仅看楼主
level 5
宽宽hony 楼主
角谷猜想
试题描述
日本一位中学生发现一个奇妙的定理,请角谷教授证明,而教授无能为力,于是产生了角谷猜想。猜想的内容是:任给一个自然数,若为偶数则除以2,若为奇数则乘3加1,得到一个新的自然数后按上面的法则继续演算。若干次后得到的结果必为1。请编写代码验证该猜想:求经过多少次运算可得到自然数1。
如:输入22,
22/2=11
11*3+1=34
34/2=17
17*3+1=52
52/2=26
26/2=13
13*3+1=40
40/2=20
20/2=10
10/2=5
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
经过15次运算得到自然数1。
输入要求
一行,一个正整数n。(1 <= n <= 20000 )
输出要求
一行,一个整数,表示得到1所用的运算次数。
输入样例
22
输出样例
15
知识点及提示
2016年11月12日 11点11分 1
level 10

题目弱智,呵呵

lz
经常水贴啊……
2016年11月13日 01点11分 3
level 5
宽宽hony 楼主
但老不加经验
2016年11月13日 04点11分 4
level 6
虽然是水贴,但我还是答复一下吧
2016年11月13日 10点11分 6
level 9
水贴小王子←
2016年11月13日 11点11分 7
level 9
//3x+1(new).pas
const maxa=100000000;
var a:array[1..maxa]of word;
var i,maxi:longword;
function step(n:qword):word;
begin
if n=1 then step:=a[n]
else if n=5 then step:=a[n]
else if n=17 then step:=a[n]
else
if (n>maxa) or (n<maxa) and (a[n]=0) then
begin
if n mod 2=0 then step:=step(n div 2)+1
else step:=step(3*n+1)+1;
end;
if (n<maxa) then
if (a[n]>0) then step:=a[n]
else a[n]:=step;
end;
begin
for i:=1 to 10000 do
begin
step(i);
if maxi<a[i] then
begin
maxi:=a[i];
writeln(i:10,a[i]:10);
end;
end;
end.
2016年11月13日 13点11分 9
level 9
//3x+1test.pas
var n:longword;
begin
repeat
readln(n);
while n>1 do
begin
if n mod 2=0 then
begin
n:=n div 2;
write(n:5);
end
else
begin
n:=(n*3+1) div 2;
if n mod 2=1 then write(n:5);
end;
end;
writeln();
until false;
end.
2016年11月13日 13点11分 10
1