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

ACM--数学--湘大OJ 1142--Collatz Conjecture

时间:2016-05-13 03:24:14      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:


湘大OJ地址:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1142



Collatz Conjecture


Time Limit:8000 MS   Memory Limit1048536KB 



考拉兹猜想,又称为3n1猜想、冰雹猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1

n = 6,根据上述数式,得出 6→3→10→5→16→8→4→2→1 。步骤中最高的数是16,共有8个步骤。现在给定任意整数ab,问对所有a ≤ n ≤ b,一共经过多少步后才能都得到1,其中最高的数是多少。


Input

有多组测试数据。每组测试数据占一行,包含两个正整数1 ≤ a ≤ 1000000a ≤ b ≤ a + 10。输入以EOF结束。


Output

对每组测试数据,输出步数和最高数,用空格隔开。


Sample Input

6 6
11 12
23 33


Sample Output

8 16
23 52
360 9232



================================天生骄傲的分割线==========================




才开始看这个题目很简单,但是实际上这个题目很变态,可以使用 long long 和 __int64 ,但是输出一定要是 %I64d 才行!



#include <stdio.h>  
int main()  
{  
    int a,b,i;  
    __int64 count,max,t;  
    while (scanf("%d%d",&a,&b)!=EOF)  
    {  
        count=0;max=a;  
        for (i=a;i<=b;i++)  
        {              
            t=i;  
            while (t!=1)  
            {  
                if (t%2)  
                {  
                    t=t*3+1;  
                }  
                else  
                {  
                    t=t/2;                      
                }  
                if(t>max)  
                    max=t;  
                count++;  
            }  
        }  
        printf("%I64d %I64d\n",count,max);  
    }  
    return 0;  
}  







ACM--数学--湘大OJ 1142--Collatz Conjecture

标签:

原文地址:http://blog.csdn.net/qq_26891045/article/details/51339426

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