zoukankan      html  css  js  c++  java
  • 烟大 Contest1024

    Problem A: The 3n + 1 problem

    Time Limit: 1 Sec  Memory Limit: 64 MB
    Submit: 14  Solved: 6
    [Submit][Status][Web Board]

    Description

    Consider the following algorithm to generate a sequence of numbers. Start with an integer n. If n is even, divide by 2. If n is odd, multiply by 3 and add 1. Repeat this process with the new value of n, terminating when n = 1. For example, the following sequence of numbers will be generated for n = 22: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 It is conjectured (but not yet proven) that this algorithm will terminate at n = 1 for every integer n. Still, the conjecture holds for all integers up to at least 1, 000, 000. For an input n, the cycle-length of n is the number of numbers generated up to and including the 1. In the example above, the cycle length of 22 is 16. Given any two numbers i and j, you are to determine the maximum cycle length over all numbers between i and j, including both endpoints.

    Input

    The input will consist of a series of pairs of integers i and j, one pair of integers per line. All integers will be less than 1,000,000 and greater than 0.

    Output

    For each pair of input integers i and j, output i, j in the same order in which they appeared in the input and then the maximum cycle length for integers between and including i and j. These three numbers should be separated by one space, with all three numbers on one line and with one line of output for each line of input.

    Sample Input

    1 10
    100 200
    201 210
    900 1000

    Sample Output

    1 10 20
    100 200 125
    201 210 89
    900 1000 174

    HINT


      
      水题。计算从 i 到 j 的最大的周期数,一开始还担心数据规模太大而超时,后来看别人的AC代码发现就是道纯水题,测试数据都没有考虑极限情况,所以就安心提交上去通过了。

    My code:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int f(int );
     8     int i,j,ii,jj;
     9     while(cin>>i>>j){
    10         int l,max=0;
    11         if(i>j){
    12             ii=j;jj=i;
    13         }
    14         else{
    15             ii=i;jj=j;
    16         }
    17         for(int k=ii;k<=jj;k++){
    18             l=f(k);
    19             if(l>max)
    20                 max=l;
    21         }
    22         cout<<i<<' '<<j<<' '<<max<<endl;
    23     }
    24     return 0;
    25 }
    26 
    27 int f(int n)
    28 {//计算 cycle-length ,返回 cycle-length 的值
    29     int l=1;
    30     while(n!=1){
    31         if(n%2==0)  //如果n是偶数
    32         {
    33             n/=2;
    34         }
    35         else//n是奇数
    36         {
    37             n=n*3+1;
    38         }
    39         ++l;
    40     }
    41     return l;
    42 }
    43 
    44 /**************************************************************
    45     Problem: 1098
    46     User: freecode
    47     Language: C++
    48     Result: Accepted
    49     Time:4 ms
    50     Memory:1268 kb
    51 ****************************************************************/

     Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    Hystrix框架4--circuit
    Hystrix框架3--线程池
    undo tablespace RETENTION GUARANTEE
    Xshell访问虚拟机
    SQL Server nvarchar(max)
    win10 D盘空间占用太大(内容和标题可能不符,慎入)
    Grid Control安装和Deployment agent
    /etc/oratab
    Environment variable ORACLE_UNQNAME not defined.Please set ORACLE_UNQNAME to database unique name.
    Oracle的listener.ora、tnsnames.ora的配置
  • 原文地址:https://www.cnblogs.com/yym2013/p/3224883.html
Copyright © 2011-2022 走看看