就是按题意查找给定两个数之间所有数按文中给定算法运算所需的最大步数,
时间限制并不严,需要注意的一点就是给定的两个数相对大小不一定,需要判断
在运算中可以保存运算结果来提高效率。。。
恩。。。再没啥了,就说这么多得了,烂代码备份
#include<cstdio>
#include<cstring>
#include<algorithm>
int s[1000005];
int ss;
int f(int i)
{
if(i<1000001&&s[i]>0) ss=s[i];
else
{
if(i%2==0)
ss=f(i/2)+1;
else
ss=f(i*3+1)+1;
}
return ss;
}
int main()
{
int beg,end,a,b,t;
memset(s,0,sizeof(s));
s[1]=1;
while(scanf("%d%d",&beg,&end)!=EOF)
{
if(beg>end)
{
a=end;
b=beg;
}
else
{
a=beg;
b=end;
}
int max=0;
for(;a<=b;++a)
{
t=f(a);
if(t>max)
max=t;
}
printf("%d %d %d\n",beg,end,max);
}
return 0;
}