码迷,mamicode.com
首页 > 其他好文 > 详细

UVaOJ 694 - The Collatz Sequence

时间:2014-07-03 13:06:40      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   strong   os   io   

 

题目很简单,但是一开始却得到了Time Limit的结果,让人感到很诧异。仔细阅读发现,题目中有一个说明:

       Neither of these, A or L, is larger than 2,147,483,647 (the largest value that can be stored in a 32-bit signed integer).

    所以应该是A溢出造成了程序“死循环”,最终导致超时。

-------------------------------------------------------------

将A由int改为long long后即正确。其中cin,cout默认支持long long。

 

 1 #include <iostream>
 2 using namespace std;
 3 int main()
 4 {
 5     long long a, lim,a_store;
 6     int count;
 7     int casenum=0;
 8     //cin >> a>>lim;
 9     //while (a>=0||lim>=0)
10     while (cin >> a >> lim)
11     {
12         casenum++;
13         a_store = a;
14         count = 1;
15         if (a < 0 && lim < 0)
16             return 0;
17         while (a != 1 && a <= lim)
18         {
19             if (a % 2)
20             {
21                 a = a * 3 + 1;
22             }
23             else
24             {
25                 a = a / 2;
26             }
27             count++;
28         }
29         if (a > lim)
30             count--;
31         
32         cout <<"Case "<< casenum<<": A = " << a_store << ", limit = " << lim << ", number of terms = " << count<<endl;
33     }
34     return 0;
35 }

 

 

UVaOJ 694 - The Collatz Sequence,布布扣,bubuko.com

UVaOJ 694 - The Collatz Sequence

标签:style   blog   color   strong   os   io   

原文地址:http://www.cnblogs.com/leoshuyi/p/3821446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!