Problem 44
コンテンツ
Pentagonal numbers are generated by the formula, Pn=n(3n1)/2. The first ten pentagonal numbers are:
1, 5, 12, 22, 35, 51, 70, 92, 117, 145, …
It can be seen that P4 + P7 = 22 + 70 = 92 = P8. However, their difference, 70 22 = 48, is not pentagonal.
Find the pair of pentagonal numbers, Pj and Pk, for which their sum and difference is pentagonal and D = |Pk Pj| is minimised; what is the value of D?
最小性を示すのが難しい、というか良く分からない。でも、答えはあっているらしい。
たぶん差分とかとって考えると最小だってことが分かるんだよ。多分。
import Data.Set penta = [n*(3*n-1)`div`2|n<-[1..10000]] isPenta = (`member` fromList penta) p044 = [a-b|a<-penta,b<-takeWhile(<a)penta,isPenta(a-b),isPenta(a+b)] main = print.head$p044
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)