Kaidul

Euler 13

Mar 3rd, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define Max 1000000
  6. int dp[Max + 1];
  7.  
  8. int main(void) {
  9.     int sequenceLength = 0;
  10.     int startingNumber = 0;
  11.     long sequence;
  12.  
  13.     for (int i = 0; i <= Max; i++) dp[i] = -1;
  14.     dp[1] = 1;
  15.  
  16.     for (int i = 2; i <= Max; i++) {
  17.         sequence = i;
  18.         int k = 0;
  19.         while (sequence != 1 and sequence >= i) {
  20.             k++;
  21.             if ((sequence % 2) == 0) {
  22.                 sequence = sequence / 2;
  23.             } else {
  24.                 sequence = sequence * 3 + 1;
  25.             }
  26.         }
  27.         dp[i] = k + dp[sequence];
  28.         if (dp[i] > sequenceLength) {
  29.             sequenceLength = dp[i];
  30.             startingNumber = i;
  31.         }
  32.     }
  33.     cout << startingNumber << endl;
  34.     return 0;
  35. }
Advertisement
Add Comment
Please, Sign In to add comment