Project Euler: Problem30
5乗の和の場合には、n桁の数値を考えると 9^5*n までの数値しか作れない。
9^5 * 1 = 59049 9^5 * 2 = 118098 9^5 * 3 = 177147 9^5 * 4 = 236196 9^5 * 5 = 295245 9^5 * 6 = 354294 9^5 * 7 = 413343 ...
5乗の和の側では7桁以上の数値は作れない。なので6桁の数値まで計算すればよくて、
object Problem30 { def pow(x : Int, n : Int) : Int = if (n==0) 1 else x * pow(x,n-1) def main(args : Array[String]) : Unit = { var result : Int = 0; for ( a <- List(0,1,2,3,4,5,6,7,8,9); b <- List(0,1,2,3,4,5,6,7,8,9); c <- List(0,1,2,3,4,5,6,7,8,9); d <- List(0,1,2,3,4,5,6,7,8,9); e <- List(0,1,2,3,4,5,6,7,8,9); f <- List(0,1,2,3,4,5,6,7,8,9) ){ if ( a*100000+b*10000+c*1000+d*100+e*10+f == pow(a,5)+pow(b,5)+pow(c,5)+pow(d,5)+pow(e,5)+pow(f,5) ) { println(a,b,c,d,e,f) result += a*100000+b*10000+c*1000+d*100+e*10+f; } } println(result-1) } }
scala の for 文がなんかちょっとキモくてウケるのは秘密だ。