需要帮助解决这个自我权力红宝石

时间:2013-10-18 06:48:55

标签: ruby loops sum

这是问题所在。

  

系列,1 1 + 2 2 + 3 3 + ... + 10 10 = 10405071317。

     

找出该系列的最后十位数,1 1 + 2 2 + 3 3 + ... +   1000 1000

这是我的代码:数字是如此之大,需要一段时间来处理。有没有更好的方法来做到这一点?我可以获得最后10位而不添加所有内容吗?有什么想法吗?

此解决方案有效。但需要一段时间来处理。用Ruby编写

def self_powers

    sum =0

     1.upto(1000).each do |n|
       sum += n**n
     end
    sum
end

3 个答案:

答案 0 :(得分:2)

p (1..1000).map{|x|x**x}.inject(:+).to_s[-10,10]

答案 1 :(得分:1)

有多种方法可以解决这个问题,这非常直接:

sum = 0
(1...1_000).each { |x| sum += x**x }
puts sum % 10**10

答案 2 :(得分:1)

这是你要找的吗?

(1..1000).inject {|tot,x| tot + x**x} % 10**10