• CODEVS——T 2969 角谷猜想


    http://codevs.cn/problem/2969/

     时间限制: 1 s
     空间限制: 32000 KB
     题目等级 : 黄金 Gold
     
     
    题目描述 Description

    所谓角谷猜想,即给定一个正整数 n,对 n 反复进行下列两种变换:
    1)如果n是偶数,就除以2;
    2)如果n是奇数,就乘以3加1。
    最后的结果总是1。

    我们把从 n 变换到 1 所需要进行的变换次数称做 n 的变换长度,如数字 7 的变换为:

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

    共进行了 16 次变换,因而 7 的变换长度为 16。

    Wish 现在对一个给定区间内的最长变换长度比较感兴趣,但是手算起来计算量太大,于是他又找到了参加信息学竞赛的你,你可以帮助他吗?

    输入描述 Input Description

    每个测试点包含多组数据,第一行一个数 t,表示数据个数。
    第二行至第 t+1 行,每行两个数 a、b,表示求 a 和 b 之间数(包含 a、b)的最长变换长度。


    输出描述 Output Description

    输出格式
    t 行,每行输出对应输入数据的各个区间的最长变换长度。

    样例输入 Sample Input

    2
    1 7
    9 20

    样例输出 Sample Output

    16
    20

    数据范围及提示 Data Size & Hint

    数据范围
    1 <= t <= 100
    1 <= a, b <= 10^8
    区间长度不超过 10^5

    记忆化、注意边界

    没写returnWA半天zz啊

     1 #include <iostream>
     2 #include <cstdio>
     3 
     4 using namespace std;
     5 
     6 #define LL long long
     7 #define max(a,b) (a>b?a:b)
     8 #define min(a,b) (a<b?a:b)
     9 inline void read(LL &x)
    10 {
    11     x=0; register char ch=getchar();
    12     for(; ch>'9'||ch<'0'; ) ch=getchar();
    13     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
    14 }
    15 LL a,b,sum[1000000];
    16 
    17 LL DFS(LL now)
    18 {
    19     if(now==1) return 0;
    20     if(now<1000000)
    21     {
    22         if(sum[now]) return sum[now];
    23         else return now&1 ? sum[now]=DFS(now*3+1)+1 : sum[now]=DFS(now>>1)+1;
    24     }
    25     else return now&1 ? DFS(now*3+1)+1 :DFS(now>>1)+1;
    26 }
    27 
    28 int Presist()
    29 {
    30     int t;
    31     for(scanf("%d",&t); t--; )
    32     {
    33         LL ans=0;    read(a),read(b);
    34         for(LL i=min(a,b); i<=max(a,b); ++i)
    35             ans=max(DFS(i),ans);
    36         printf("%lld
    ",ans);
    37     }
    38     return 0;
    39 }
    40 
    41 int Aptal=Presist();
    42 int main(){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    2019第二周作业
    求最大值及其下标
    查找整数
    2018秋季学习总结
    抓老鼠 亏了还是赚了
    币值转换
    打印沙漏
    从文本中找出url,并附上链接。
    手机端点击输入框页面会放大
    <dl>、<dt>和<dd>标记的用法
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7544114.html
Copyright © 2020-2023  润新知