题意:3*n+1问题,输出区间内的最大处理次数
#include<stdio.h>
int a[10001];
void fun()
{
int temp,cnt;int i,k=0;
for(i=1;i<=10001;i++)
{
temp=i;cnt=0;//cnt初始化必须在for内
while(temp!=1)
{
if(temp&1)
temp=3*temp+1;
else
temp>>=1;
cnt++;
//printf("%d\n",cnt);
}
a[k++]=cnt;//实际上k没必要,k相当于(i-1)
}
}
int main()
{
int m,n,max;int i,j;
fun();
while(~scanf("%d%d",&m,&n))
{
max=0;
for(i=m;i<=n;i++)
if(max<a[i-1])
max=a[i-1];
printf("%d %d %d\n",m,n,max+1);
}
return 0;
}
//超时
#include<stdio.h>
int main()
{
int m,n;int i,j;int max,temp,cnt;
while(~scanf("%d%d",&m,&n))
{
max=0;
for(i=m;i<=n;i++)
{
temp=i;cnt=0;//cnt初始化必须在for内
while(temp!=1)
{
if(temp&1)
temp=3*temp+1;
else
temp>>=1;
cnt++;
// printf("%d\n",cnt);
}
if(max<cnt)
{
max=cnt;
// printf("%d\n\n",max);
}
}
printf("%d %d %d\n",m,n,max+1);
}
return 0;
}