Prog001v5
Home ] Up ]

 

//file   Prog001v5.cpp
//author AOU
#include <iostream>
using namespace std;

/*
input n1, n2
output the longest maxCycleLength
*/

/*
Algorithm50:

input n1 and n2
calculate maxCycleLength
output n1, n2, maxCycleLength
*/


/*
Algorithm51:

input n1 and n2
//calculate maxCycleLength
maxCycleLength = 0
for each value m in n1 and n2 do the following
  calculate the cycleLength for that value m
  update maxCycleLength if necessary
  end for

output n1, n2, maxCycleLength
*/

/*
Algorithm52:

input n1 and n2
//calculate maxCycleLength
maxCycleLength = 0
for each value m in n1 and n2 do the following
  //calculate the cycleLength for that value m
  n = m
  cycleLength = 1

  while n>1 do the following
    if n is even then
        divide it by two 
      else 
        multiply it by three and add 1
    cycleLength++
    end while

  //update maxCycleLength if necessary
  if cycleLength > maxCycleLength then maxCycleLength = cycleLength
  end for

output n1, n2, maxCycleLength
*/


void main (void)
  {
  int n;
  int cycleLength;
  int n1, n2;

  cin >> n1 >> n2;
  int maxCycleLength=0;

  for (int m=n1; m<=n2; m++)
    {
    n = m;
    cycleLength = 1;

    while (n > 1)
      {
      if (n%2 == 0)
          n = n/2;
        else
          n = 3*n + 1;

      cycleLength++;
      }

    if (cycleLength > maxCycleLength)
      maxCycleLength = cycleLength;

    }

  cout << n1 << ' ' << n2 << ' ' << maxCycleLength << endl;
  }

/*
1 10
1 10 20
Press any key to continue
*/