Problem 78

Problem 78 - Project Euler
引き続き分割数の問題。100万で割り切れる最初の分割数はなにか?という問題で、今度はすぐには答が出てこない。
15秒かかった。
Wikipedia(自然数の分割 - Wikipedia)見てこれなのでうむむ…

limit <- 1e6
pn.list <- numeric(limit)
pn.list[1] <- 1
temp <- 1:limit
lef <- (3*temp^2-temp)/2
rig <- (3*temp^2+temp)/2
lef <- lef[lef<limit]
rig <- rig[rig<limit]
pm <- (-1)^(temp+1)
for(n in 2:limit){
  pn.list[n] <- sum(pm[1:length(lef[lef<n])]*pn.list[n-lef[lef<n]],
                    pm[1:length(rig[rig<n])]*pn.list[n-rig[rig<n]])%%1e6
  if(pn.list[n]==0) break
}
n-1