Ruby sum est une histoire sobre et étonnante

introduction

L'histoire de «sum», qui a la réputation d'être rapide et rapide, était vraiment rapide

Ce thème

AtCoder Beginner Contest B - Trapezoid Sum Difficulty: 27

Ce thème, la somme de la séquence d'égalité

Le thème est que si vous les ajoutez normalement, vous obtiendrez TLE, donc la formule pour la somme des séquences d'égalité

S=n(a+b)/2

Utilisons. inject(TLE)

ruby.rb


n = gets.to_i
sum = 0
n.times do
  a, b = gets.split.map(&:to_i)
  sum += (a..b).inject(:+)
end
puts sum

Superbement TLE sum(AC)

ruby.rb


n = gets.to_i
sum = 0
n.times do
  a, b = gets.split.map(&:to_i)
  sum += (a..b).sum
end
puts sum

Ça passe normalement. Il semble que «somme» de «plage» utilise en interne la formule de la somme de la séquence d'égalité ~~ (appropriée) ~~ Apparemment, c'était vrai. Veuillez vous référer à la section des commentaires.

Ruby(inject) Ruby(sum)
Longueur du code(Byte) 110 103
Temps d'exécution(ms) TLE 135
Mémoire(KB) 14344 14392

Sommaire

Recommended Posts

Ruby sum est une histoire sobre et étonnante
Qu'est-ce qu'un module Ruby?
À propos de l'opérateur de produit Ruby (&) et de l'opérateur somme (|)
Qu'est-ce qu'un tableau bidimensionnel Ruby?
Une histoire qui sépare la logique métier et le modèle
Une histoire très utile sur la classe Struct de Ruby
Rubis et gemme
Qu'est-ce qu'un opérateur de référence sûr (&.) Utilisant Ruby Ampasand?
[Ruby] J'ai fait un robot avec de l'anémone et du nokogiri.
Une note approximative sur les tableaux Ruby et les objets de hachage