L=[] def p(n) return 0 if n < 0 return 1 if n==0 return L[n] if L[n] s=0 (1..n).each do |k| s+=((-1)**(k+1))*(p(n-(k*(3*k-1))/2)+p(n-(k*(3*k+1))/2)) L[n]=s end s end (1..100).each do |i| puts"p(#{i})=#{p(i)}" end