求助:杭电的1032 角谷猜想,不明白我的代码哪里错了,帮忙找找,谢谢

2024-12-05 05:27:48
推荐回答(1个)
回答1:

程序可以运行,楼主题目全英文我看不懂。按题目输入数字,运行结果和答案一样,但是排列和答案不一样,下面是修改后代码(为了便于排错,我把代码风格改为我习惯的):

#include
int main()
{
int c;
long i, j, max, num, q, k;
while (scanf ("%ld%ld",&i,&j) != EOF)
{
if ((i > 1000000) || (j > 100000) || (i < 0) || (j < 0))
break;
if (i > j)
{
c = i;
i = j;
j = c;
}
max = 0;
for (k = i;k <= j;k++)
{
num = 1;
q = k;
while (q != 1)
{
if (q & 1)
q = q*3+1;
else
q/=2;
num++;
}
if (num > max)
max = num;
}
if (i > j)
printf("%ld %ld %ld\n", i, j, max);
else
printf("%ld %ld %ld\n", j, i, max);
}
return 0;
}