您的位置:首页 > 其它

hdu 1032 The 3n + 1 problem

2010-08-05 16:49 369 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1032

额,好久没做到这么水的题了

题目求从n到m之间(包括n和m),依照函数可以打印出最多的数是多少

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

就是最多调用 “ 2. print n” 这一行多少次

直接模拟

#include<iostream>

using namespace std;

int jud(int n)

{

int num=1;

if(n!=1)

while(n!=1)

{

if(n%2!=0) {n=n*3+1; num++;}

else {n/=2; num++;}

}

return num;

}

int main()

{

int a,b;

int max;

int i;

while(scanf("%d%d",&a,&b)!=EOF)

{

printf("%d %d ",a,b);

max=0;

if(a>b) swap(a,b);

for(i=a;i<=b;i++)

if(jud(i)>=max)

max=jud(i);

printf("%d/n",max);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: