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;
}