• [解题报告] The Collatz Sequence


    题目大意

    题目原文:http://uva.onlinejudge.org/external/6/694.pdf

    背景

    编写一个程序

    第 1 步:选择任意正整数A作为序列中的第一项。

    第 2 步:如果A = 1 然后停止。

    第 3 步:如果A为偶数,则替换A由A / 2,然后转到步骤 2。

    第 4 步:如果A为奇数,然后替换A由 A * A + 1,并转到步骤 2。

    这一问题的输入包含多个测试用例。每个案例中,输入包含两个正整数的单个行、 第一个是A 和第二个是L的初始值,L是限制值。其中, AL,既不是大于 2147483647 (可以存储在一个 32 位有符号整数的最大值)。初始的A值总是小于L,当A的值大于L的值时退出程序。当输入的值为负数时不进行计算。

     

    Sample Input

    3 100
    34 100
    75 250
    27 2147483647
    101 304
    101 303
    -1 -1
    Sample Output
    Case 1: A = 3, limit = 100, number of terms = 8
    Case 2: A = 34, limit = 100, number of terms = 14
    Case 3: A = 75, limit = 250, number of terms = 3
    Case 4: A = 27, limit = 2147483647, number of terms = 112
    Case 5: A = 101, limit = 304, number of terms = 26
    Case 6: A = 101, limit = 303, number of terms = 1

    算法:

    关键是要比较输入输出样列,得到关系和看清题目的条件,要注意的是代码要求保留A的值。

    代码:这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确,

     1 #include<stdio.h>
     2 int main(void)
     3 {
     4     long long a,l,b;
     5     int num,n=0;
     6 
     7     while(scanf("%lld %lld",&a,&l)!=EOF)
     8     {
     9         num=0;
    10         b=a;
    11         if(a < 0||l < 0)break;
    12 
    13         while(a!=1)
    14         {
    15             if(a%2==0)
    16               {
    17                   a=a/2;
    18                   num++;
    19               }
    20             else
    21               {
    22                   a=3*a+1;
    23                   num++;
    24                   if(a > l)break;
    25               }
    26         }
    27         if(a==1)num++;
    28         n++;
    29         printf("Case %d: A = %lld, limit = %lld, number of terms = %d\n",n,b,l,num);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    寻找两个正序数组的中位数
    06Go语言数组和切片
    缺失的第一个正数
    linux 学习笔记001
    MyBatisPlus使用
    MyBatis(六)MyBatis使用事务
    Spring学习(八)Spring集成Log4J日志
    Spring学习(五)Spring 基于注解装配Bean
    使用Azure DevOps 进行 docker .net core 自动部署
    MyBatis(五)MyBatis动态SQL
  • 原文地址:https://www.cnblogs.com/qisong178878915/p/2893489.html
Copyright © 2020-2023  润新知