我已经尝试了所有测试用例,但没有发现问题。我检查的测试用例:
但是为什么我总是会得到错误的答案?
这是我的代码:
#include "stdio.h"
unsigned long int cycle = 0, final = 0;
unsigned long int calculate(unsigned long int n)
{
if (n == 1)
{
return cycle + 1;
}
else
{
if (n % 2 == 0)
{
n = n / 2;
cycle = cycle + 1;
calculate(n);
}
else
{
n = 3 * n;
n = n + 1;
cycle = cycle+1;
calculate(n);
}
}
}
int main()
{
unsigned long int i = 0, j = 0, loop = 0;
while(scanf("%ld %ld", &i, &j) != EOF)
{
if (i > j)
{
unsigned long int t = i;
i = j;
j = t;
}
for (loop = i; loop <= j; loop++)
{
cycle = 0;
cycle = calculate(loop);
if(cycle > final)
{
final = cycle;
}
}
printf("%ld %ld %ld\n", i, j, final);
final = 0;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
提示是您收到i,j,但并不是所有情况下i <j,请检查代码中的条件,并记住始终按顺序打印:
<i>[space]<j>[space]<count>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2907 次 |
最近记录: |