Prog001v3
Home ] Up ]

 

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

/*
input n1, n2
output the longest maxCycleLength

*/


/*
Algorithm3: to display all the numbers and counts in a given range, and max count
get n1 and n2
maxCycleLength=0
for m=1 to n2
  n = m
  get a value for n
  display n
  cycleLength = 1
  do while n > 1
    if n is even then 
      n = n/2
    else
      n = 3*n + 1
    end if

    display n
    cycleLength++
    end while

  display cycleLength
  if cycleLength > maxCycleLength then
    maxCycleLength = cycleLength

  end for

output maxCycleLength

*/

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

  cin >> n1 >> n2;
  for (int m=n1; m<=n2; m++)
    {
    n = m;
    //cin >> n;
    cout << n << ' ';
    cycleLength = 1;
    while (n > 1)
      {
      if (n%2 == 0)
          n = n/2;
        else
          n = 3*n + 1;

      cout << n << ' ';
      cycleLength++;
      }

    cout << endl;
    cout << "cycleLength = " << cycleLength << endl;
    cout << "---------------\n";

    if (cycleLength > maxCycleLength)
      maxCycleLength = cycleLength;

    }

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

/*
1 10
1
cycleLength = 1
---------------
2 1
cycleLength = 2
---------------
3 10 5 16 8 4 2 1
cycleLength = 8
---------------
4 2 1
cycleLength = 3
---------------
5 16 8 4 2 1
cycleLength = 6
---------------
6 3 10 5 16 8 4 2 1
cycleLength = 9
---------------
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
cycleLength = 17
---------------
8 4 2 1
cycleLength = 4
---------------
9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
cycleLength = 20
---------------
10 5 16 8 4 2 1
cycleLength = 7
---------------
1 10 20
Press any key to continue
*/