原题链接 UVA100
这是一道曾经在Uva JOJ POJ 和刘汝佳的 挑战编程 (还是挑战编程的 第一道题)上都做过的题
我记得一开始的时候觉得 得超时。。因为给的时间很短。1000ms。
但是常规的暴解就可以了。在挑战编程 的网站上 我的代码差点 TLE。
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int a, b, i, countn, k ,maxn;
while (scanf("%d %d", &a, &b)!=EOF)
{
maxn = 0;
if (a < b)
{
for (k=a; k<=b; k++)
{
i = k;
countn = 0;
while (i!=1)
{
if (i % 2 == 0) i = i/2;
else i = i * 3 + 1;
++countn ;
}
countn++;
if (countn > maxn) maxn = countn;
}
printf("%d %d %d\n",a, b, maxn);
}
else
{
for (k=a; k>=b; k--)
{
i = k;
countn = 0;
while (i!=1)
{
if (i % 2 == 0) i = i/2;
else i = i * 3 + 1;
++countn ;
}
countn++;
if (countn > maxn) maxn = countn;
}
printf("%d %d %d\n",a, b, maxn);
}
}
return 0;
}