一道ACM题,总是 output limit exceed,谁能告我为什么是这个错误1013:The 3n + 1 problem Time Limit:1 Sec Memory Limit:64 MBSubmit:58 Solved:16[Submit][STATUS][Web Board]DescriptionConsider the following algorithm to generate a sequence of numbers.Start with an integer n.If n is even,divide by 2.If n is odd,multiply by 3 and add 1.Repeat this process with the new value of n,terminating when n = 1.For example,the following sequence of numbers will be generated for n = 22:22

问题描述:

一道ACM题,总是 output limit exceed,谁能告我为什么是这个错误
1013:The 3n + 1 problem
Time Limit:1 Sec Memory Limit:64 MB
Submit:58 Solved:16
[Submit][STATUS][Web Board]
Description
Consider the following algorithm to generate a sequence of numbers.Start with an integer n.If n is even,divide by 2.If n is odd,multiply by 3 and add 1.Repeat this process with the new value of n,terminating when n = 1.For example,the following sequence of numbers will be generated for n = 22:22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 It is conjectured (but not yet proven) that this algorithm will terminate at n = 1 for every integer n.Still,the conjecture holds for all integers up to at least 1,000,000.For an input n,the cycle-length of n is the number of numbers generated up to and including the 1.In the example above,the cycle length of 22 is 16.Given any two numbers i and j,you are to determine the maximum cycle length over all numbers between i and j,including both endpoints.
Input
The input will consist of a series of pairs of integers i and j,one pair of integers per line.All integers will be less than 1,000,000 and greater than 0.
Output
For each pair of input integers i and j,output i,j in the same order in which they appeared in the input and then the maximum cycle length for integers between and including i and j.These three numbers should be separated by one space,with all three numbers on one line and with one line of output for each line of input.
Sample Input
1 10
100 200
201 210
900 1000
Sample Output
1 10 20
100 200 125
201 210 89
900 1000 174
我的代码:
#include
int main()
{
long i,j,k,s,t,max,m;
while(scanf("%ld%ld",&i,&j))
{
max=0;
for(k=i;kmax)
{
max=s;
}
}
printf("%ld %ld %ld\n",i,j,max);
}
return 0;
}

输出超限……一般是没有处理好程序的退出条件
你把 while(scanf("%ld%ld",&i,&j))
改成 while(scanf("%ld%ld",&i,&j)!=EOF)
试一试

#includeint main(){long i,j,k,s,t,max,m;while(scanf("%ld%ld",&i,&j)==2) // 防止Output Limit Exceed{printf("%ld %ld ",i,j); // 先把 i 和 j 输出if(i>j){max = i;i=j;j=max;} // 如果 i 大于 j,交换他们的位...