Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers

introduction

Ce thème

AtCoder Beginner Contest D - 2017-like Number Difficulty: 981

Ce thème, nombre premier + somme cumulée

En parlant de nombres premiers, *** Ruby *** a une bibliothèque Prime. Mettez un nombre premier inférieur ou égal à 100000 dans le hachage, vérifiez si (n + 1) / 2 est dans le hachage et obtenez un nombre similaire à 2017. Ensuite, trouvez l'apparence d'un nombre similaire à 2017 par la somme cumulée. Ruby

ruby.rb


require 'prime'

g = Prime::EratosthenesGenerator.new
h = Hash.new(0)
a = 2
while a < 100000
  h[a] = 1
  a = g.next
end
k = Array.new(100001, 0)
h.keys.each do |x|
  k[x] = 1 if h[(x + 1) / 2] == 1
end
1.upto(100000) do |i|
  k[i] += k[i - 1]
end
gets.to_i.times do
  l, r = gets.split.map(&:to_i)
  puts k[r] - k[l - 1]
end

prime.rb


g = Prime::EratosthenesGenerator.new

Utilisez un générateur principal.

rui.rb


1.upto(100000) do |i|
  k[i] += k[i - 1]
end

Nous obtenons la somme cumulative. Python

python.py


from sys import stdin

def main():
    from collections import defaultdict
    from math import sqrt
    input = stdin.readline

    h = defaultdict(int)
    h[2] = 1
    for i in range(3, 100000, 2):
        for j in range(3, int(sqrt(i)) + 1, 2):
            while i % j == 0:
                h[j] = 1
                i //= j
        if i > 1:
            h[i] = 1
    k = [0] * 100001
    for key in h.keys():
        if (key + 1) / 2 in h and h[(key + 1) / 2] == 1:
            k[key] = 1
    for i in range(1, 100001):
        k[i] += k[i - 1]
    q = int(input())
    for _ in range(q):
        l, r = map(int, input().split())
        print(k[r] - k[l - 1])
main()

prime.py


    h[2] = 1
    for i in range(3, 100000, 2):
        for j in range(3, int(sqrt(i)) + 1, 2):
            while i % j == 0:
                h[j] = 1
                i //= j
        if i > 1:
            h[i] = 1

Je crée mes propres nombres premiers.

hash.py


        if (key + 1) / 2 in h and h[(key + 1) / 2] == 1:
            k[key] = 1

Il est nécessaire de confirmer l'existence de la clé du dictionnaire.

Ruby Python
Longueur du code(Byte) 344 697
Temps d'exécution(ms) 288 692
Mémoire(KB) 4304 7896

Résumé

Site référencé

Recommended Posts

Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
AtCoder ARC104 B Somme cumulative résolue en Ruby, Python et Java
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résoudre AtCoder ABC168 avec python (A ~ D)
Résolution avec Ruby, Python et networkx AtCoder ABC168 D Liste adjacente
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
Résolution avec Ruby et Python AtCoder ABC057 C Décomposition du facteur premier Recherche complète de bits
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative
AtCoder ABC 165 D Floor Function résolue en Ruby, Perl, Java et Python
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 047 C Expression régulière
Résoudre ABC166 A ~ D avec Python
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 065 C-th power
AtCoder JSC2019 Qual B à résoudre par Ruby et Python
Résolution avec Ruby, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Projet Euler # 10 "somme des nombres premiers" en Python
Résolvez A ~ D du codeur yuki 247 avec python
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC183 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC181 avec Python!
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
Juger les nombres premiers avec python
Résoudre ABC175 D en Python
AtCoder ABC 182 Python (A ~ D)
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
AtCoder ABC168 Une expression de cas résolue en Ruby et Python
Projet Euler 10 "Somme des nombres premiers"
Résoudre Atcoder ABC169 A-D avec Python
Recommandation de résolution des problèmes d'AtCoder avec python (20200517-0523)
Résoudre ABC168 A ~ C avec Python
Résolu AtCoder ABC 114 C-755 avec Python3
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Coexistence de Python2 et 3 avec CircleCI (1.0)
J'ai comparé la vitesse de Hash avec Topaz, Ruby et Python
J'ai essayé de créer une liste de nombres premiers avec python
Je voulais résoudre le problème ABC164 A ~ D avec Python
ABC 157 D - Résolvez les suggestions d'amis en Python!
Résolution avec Ruby, Perl, Java et Python AtCoder AGC 033 A Recherche de priorité de largeur
Je voulais résoudre ABC160 avec Python
[Python] Résolvez 10 problèmes d'élite passés d'Atcoder
Résolvez AtCoder Débutant Contest 170 D - Non divisible (ABC170D) avec python (tamis Eratostenes)