@@ -0,0 +1,892 @@
+import java.math.BigInteger;%0Aimport java.util.HashMap;%0Aimport java.util.Map;%0A%0A@SuppressWarnings(%22unused%22)%0Apublic class P076 implements Puzzle %7B%0A%0A    private Map%3CLong, BigInteger%3E resultsCache = new HashMap%3C%3E();%0A%0A    @Override%0A    public String solve() %7B%0A        resultsCache.put(0L, BigInteger.ONE);%0A%0A        return %22%22 + p(100).subtract(BigInteger.ONE);%0A    %7D%0A%0A    // see http://en.wikipedia.org/wiki/Partition_function_%2528mathematics%2529%0A    private BigInteger p(long n) %7B%0A        if (resultsCache.containsKey(n)) %7B%0A            return resultsCache.get(n);%0A        %7D%0A%0A        BigInteger s = BigInteger.ZERO;%0A        long k = 2;%0A        for (long j = n - 1; j %3E= 0; ) %7B%0A            BigInteger t = p(j);%0A%0A            s = s.add(((k / 2) %25 2 == 1) ? t : t.negate());%0A            j -= (k %25 2 == 1) ? k : k / 2;%0A            k += 1;%0A        %7D%0A        resultsCache.put(n, s);%0A        return s;%0A    %7D%0A%7D

add 76