/**************
 solution to problem 1, Duke ACM Internet programming contest
 by: Owen Astrachan
 date: 10/19/90
**************/

#include <stdio.h>

int cycle (int m)   /* return number of elements in the 3n+1 cycle for m */
{
      int   i = 1;

      while (m != 1) {
            if (m % 2 == 0)
                        m = m/2;
                  else
                        m = 3*m+1;
            i++;
            }
      return i;
}


main()
{
      int   m, n, max, temp;
      int   mOriginal, nOriginal;
      int   i;

      while (scanf("%d %d\n", &m, &n) == 2) {

            mOriginal = m;   /* remember original order of entries for output */
            nOriginal = n;

            if (m > n) {   /* swap if out of order */
                  temp = m;
                  m = n;
                  n = temp;
                  }

            max = cycle(m);
            for (i=m+1; i<=n; i++) {
                  temp = cycle(i);
                  if (temp > max) max = temp;
                  }

            printf("%d %d %d\n", mOriginal, nOriginal, max);
      }
}

The Online Judge System