Pages

Saturday, June 2, 2012

100 - The 3n + 1 problem



//
// main.cpp
// UVa
//
// Created by Panks on 06/05/12.
// Copyright (c) 2012 __MyCompanyName__. All rights reserved.
//

#include <iostream>
#include <cstdio>
using namespace std;

int getDist(int num);

int main (void)
{
int a,b,maxi=0,c,d;
while(cin>>a>>b){
maxi=0;
c=max(a,b);
d=c==a?b:a;
for (int i=d; i<=c; i++) {
maxi=max(maxi, getDist(i));
}
printf("%d %d %d\n", a,b,maxi);
}
return 0;
}

int getDist(int num){
int dist=1;
if(num==1)
return 1;
while(1){
if(num%2==0){
num=num/2;
dist++;
if(num==1)
break;
}
else{
num=num*3+1;
dist++;
}
}
return dist;
}


No comments:

Post a Comment