求ac代码,tyvj初级题库1039 3n+1问题

求ac代码,tyvj初级题库1039 3n+1问题
网.站.地.址begin.tyvj.cn描述 Description 考虑如下序列的生成算法:从整数n开始,如果n是偶数,把他除以2;如果他是奇数,把他乘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.这个猜想至少对于1000000以内的数都正确.
  对于给定的n,该序列的元素(包括1)个数称之为n的循环节长度.例如上例中循环节长度为16.
就爱看回贴 1年前 已收到2个回答 举报

yanzijiayuan 幼苗

共回答了18个问题采纳率:94.4% 举报

var n,m:longint;
begin
readln(n);
write(n,' ');
m:=1;
repeat
if n mod 2=0 then n:=n div 2
else n:=n*3+1;
m:=m+1;
write(n,' ');
until n=1;
writeln;
writeln('循环节长度:',m);
end.输入n,输出中途得到的数和循环节长度.

1年前

10

毛毛雨333 春芽

共回答了17个问题采纳率:88.2% 举报

long n, t =1; //n 为任意整数,t为循环节长度
scanf("%ld",&n);
while(1)
{
if(n==1)
break;
if(n%2==0)
n/=2;
else
n=3*n+1;
t++;
}

1年前

0
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 18 q. 0.218 s. - webmaster@yulucn.com