18 October, 2008

[Project Euler] Problem 6

Project EulerのProblem 6

 本当は高校の数学を使って紙と鉛筆で解ける様な問題のはずなんだが、いざ解いてみようとすると案の定 k^2 の和の公式を忘れていて、k(k+1) の和の公式から作り直したりとか。手でこういう計算をしなくなってから長いからなぁ。

object P006 {
def p006(n:Int):Int = sq(sum(List.range(1,n+1))) - sum(List.range(1,n+1).map(sq))
def sum(xs:List[Int]):Int = xs.foldLeft(0)(_+_)
def sq(x:Int):Int = x*x
def main(args:Array[String]) {
println(new java.util.Date)
println(p006(10))
println(p006(100))
println(new java.util.Date)
println(f(100))
}
def f(n:Int):Int = sq(n*(n+1)/2) - n*(n+1)*(2*n+1)/6
}

No comments: