package margusmartseppcode.From_10_to_19; public class Problem_14 { static final int maxSize = 1000000; static long d[] = new long[maxSize]; static { d[1] = 1; } static long makeChain(long nr) { if (nr >= maxSize) return makeChain(nr % 2 == 0 ? nr / 2 : 3 * nr + 1) + 1; else if (d[(int) nr] == 0) d[(int) nr] = makeChain(nr % 2 == 0 ? nr / 2 : 3 * nr + 1) + 1; return d[(int) nr]; } public static void main(String[] args) { int maxNr = 0; long maxLen = 0; for (int i = 1; i < 1000000; i++) { if (makeChain(i) > maxLen) { maxNr = i; maxLen = d[i]; } } System.out.println(maxNr); } }
Tuesday, September 8, 2009
Euler Problem 14 solution
Time (s): ~0.355
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment