0

这是问题所在。

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

求系列的最后十位,1 1 + 2 2 + 3 3 + ... + 1000 1000

这是我的代码:这个数字太大了,需要一段时间来处理。有没有更好的方法来做到这一点?我可以在不将所有内容相加的情况下获得最后 10 位数字吗?有什么想法吗?

此解决方案有效。但需要一段时间来处理。用红宝石写的

def self_powers

    sum =0

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

3 回答 3

2
p (1..1000).map{|x|x**x}.inject(:+).to_s[-10,10]
于 2013-10-18T07:05:49.630 回答
1

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

sum = 0
(1...1_000).each { |x| sum += x**x }
puts sum % 10**10
于 2013-10-18T07:00:54.930 回答
1

这是你要找的吗?

(1..1000).inject {|tot,x| tot + x**x} % 10**10
于 2013-10-18T07:04:59.867 回答