Problem 28
http://projecteuler.net/index.php?section=problems&id=28
21 | 22 | 23 | 24 | 25 |
20 | 7 | 8 | 9 | 10 |
19 | 6 | 1 | 2 | 11 |
18 | 5 | 4 | 3 | 12 |
17 | 16 | 15 | 14 | 13 |
5*5の2つの斜めの合計 ((21+7+1+3+13) + (25+9+1+5+17) - 1) は 101 である。
1,001*1,001のとき、2つの斜めの合計は何か?
階差数列なので次のように一般化できる。
... | ||
... | 1 | ... |
... |
展開して、
... | ||
... | 1 | ... |
... |
だから
main = print $ 4 * sum [ 4 * i * i + i + 1 | i <- [0..(1001 `div` 2)]] - 3
これは、つまらん解き方だな。