Programming Challenges: The 3n+1 problem
PC/UVa IDs: 110101/100, Popularity: A, Success rate: low, Level: 1
The Collatz problem. More of an introductory “hello world” for the algorithmic programming than a “challenge”. But still:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream> using namespace std; int length(int n) { int i = 1; while(n != 1) { if(n % 2 == 0) { n /= 2; } else { n *= 3; n += 1; } i++; } return i; } int main(int argc, char *argv[]) { int a, b, low, high; while(cin>>a>>b) { if(a < b) { low = a; high = b; } else { low = b; high = a; } int max = length(low); for(int i = low + 1; i <= high; i++) { int l = length(i); if(l > max) { max = l; } } cout<<a<<" "<<b<<" "<<max<<endl; } return 0; } |
Comments Off on Programming Challenges: The 3n+1 problem