Project Euler - Problem16 “Rubyをキメると気持ちイイ”

今回は英語でがんばりました。

2^(15) = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.

What is the sum of the digits of the number 2^(1000)?

Problem 16 - Project Euler

といってもほとんど数式ですが・・。*1


今回は図が出てこない、文字だけの問題なので、解きやすいと思います。前問が数学寄りの問題だとしたら、本問はプログラミング寄りの問題といったところでしょうか。




***以降ネ・タ・バ・レ***











この問題にRubyを使ってしまうと、表題の通りRubyの気持ち良さを味わうだけで終わります。

ruby -e "p (2**1000).to_s.split('').inject(0){|r,i|r+i.to_i}"


以上、というのもアレなので、きちんと刻みます。

num = 2 ** 1000
str = num.to_s
ary = str.split('')
sum = ary.inject(0) {|result, item| result + item.to_i }
puts sum


Cとまではいかなくても、せめてJavaで解けるようになりたい。Javaは同じロジックで解けるのだろうか?



So Long! Good Bye.

*1:本家からコピペすると、乗数が自動で一行表記になりました。ソースを見ると、imgタグが埋め込まれている様子。つまり、画像をコピペすると、alt属性の値が張り付けられた、と。これは誰の機能だろう。