1293. 3n+1数链问题

来源:互联网 发布:数据新闻栏目 编辑:程序博客网 时间:2024/05/29 04:48

1293. 3n+1数链问题

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况我们并不知道哪一类问题可以解决,那一类问题不可解决。现在我们就有这样一个问题,问题如下: 

1.       输入一个正整数n;

2.       把n显示出来;

3.       如果n=1则结束;

4.       如果n是奇数则n变为3n+1    ,否则n变为n/2;

5.       转入第2步。

例如对于输入的正整数22,应该有如下数列被显示出来:

22  11  34  17  52  26  13  40  20  10  5  16  8  4  2  1 

 

我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1,000,000的正整数都满足以上推断。

对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。

       你的任务是编写一个程序,对于任意一对正整数i和j,给出i、j之间的最长链长,当然这个最长链长是由i、j之间的其中一个正整数产生的。我们这里的i、j之间即包括i也包括j。

 

Input

输入文件只有一行,即为正整数i和j,i和j之间以一个空格隔开。0 < i ≤ j < 10,000。

Output

文件只能有一行,即为i、j之间的最长链长。

Sample Input

1 10

Sample Output

20

Problem Source

ZSUACM Team Member

题目并不难,理解数链的变换规律即可,用数组存储每个数链的长度,最后输出最大的即可。

// Problem#: 1293

// Submission#: 1854228

// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/

// All Copyright reserved by Informatic Lab of Sun Yat-sen University

#include<stdio.h>

int main(){

    int i,j;

    while(scanf("%d %d",&i,&j)!=EOF){

        int length=j-i+1;

        int a[length];

        int counter;

        int countert;

        int temp=0;

        for(counter=i;counter<=j;counter++){

            temp=1;

            countert=counter;

            while(countert!=1){

                if((countert%2)!=0){

                    countert=countert*3+1;

                }

                else{

                    countert/=2;

                }

                temp++;

            }

            a[counter-i]=temp;

        }

            for(i=0;i<length-1;i++){

                if(a[i]>a[i+1]){

                    temp=a[i];

                    a[i]=a[i+1];

                    a[i+1]=temp;

                }

            }

        printf("%d\n",a[length-1]);

    }

    return 0;

}                               

原创粉丝点击