Résolvez AtCoder Débutant Contest 170 D - Non divisible (ABC170D) avec python (tamis Eratostenes)

Bonjour. J'ai fait une double boucle avec ce problème pendant le concours et TLE. Je ne me souviens pas encore de l'algorithme de base, donc je veux pouvoir l'utiliser correctement. Ce problème semble économiser beaucoup de calculs si vous utilisez le même principe que le tamis Eratostenes.

code.py


N = int(input())
A = list(map(int, input().split()))
A.sort()                  #Trier pour le tamisage des élatostines
Amax = A[-1]
dp = [1]*(Amax+1)         #Faites un tamis d'ératostènes jusqu'à la valeur maximale de A.
ans = 0
for i in range(len(A)-1):
  p = A[i]
  if dp[p] == 1:          #A[i]Est un[j]Vérifiez s'il s'agit d'un multiple de
    for q in range(Amax//p+1):
      dp[p*q] = 0         #A[i]Définir tous les multiples de
    if A[i] != A[i+1]: 
      ans += 1            #A[i]Compter si ne se chevauche pas
if dp[Amax] == 1:         #Étant donné que la plage est terminée lors de la vérification des doublons, seul Amax est jugé séparément.
  ans += 1
print(ans)

dp est dans l'état initial dp = [1 1 1 1 1 1 1 ...].

Par exemple Si A [0] = 3, le dp après une opération est dp = [0 1 1 0 1 1 0 ...].

Recommended Posts

Résolvez AtCoder Débutant Contest 170 D - Non divisible (ABC170D) avec python (tamis Eratostenes)
Résolvez AtCoder Beginner Contest159 D --Banned K (ABC159D) avec python (le compte est trop lent!)
Résoudre AtCoder ABC168 avec python (A ~ D)
Concours pour débutants AtCoder: Réponses aux problèmes D Python
Résolvez AtCoder 167 avec python
Résolvez "AtCoder version! Arimoto (Débutant)" avec Python!
Résolvez AtCoder ABC166 avec python
Concours Atcoder Débutant 152 Kiroku (python)
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Résoudre ABC166 A ~ D avec Python
Recommandation de résolution des problèmes d'AtCoder avec python (20200517-0523)
AtCoder Beginner Contest 174 C Problème (Python)
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
[At Coder] Débutant Contest 175 Présentation de la solution ABCD python
Concours AtCoder Débutant 177
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
Concours AtCoder Débutant 179
Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers
Concours AtCoder Débutant 172
Concours AtCoder Débutant 180
AtCoder Beginner Contest 169, D.Div Game code court
Concours AtCoder Débutant 173
Tamis Eratostenes (édition Python)
Concours Atcoder Débutant 153
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
[Python] [BFS] Au concours de codeur pour débutants 168-D [.. Double Dots]
Critique du concours AtCoder Beginner Contest 152
Concours AtCoder Débutant 181 Remarque
Résoudre ABC168D en Python
Résolvez ABC167-D avec Python
Critique du concours AtCoder Débutant 160
Critique du concours AtCoder Débutant 178
Concours AtCoder Débutant 180 Remarque
Critique du concours AtCoder pour débutant 166
AtCoder Débutant Contest 167 Évaluation
Concours AtCoder Débutant 182 Remarque
Critique du concours AtCoder
AtCoder Débutant Contest 169 Évaluation
Critique du concours AtCoder Débutant 181
AtCoder Débutant Contest 171 Critique
Critique du concours AtCoder pour débutant 182
Critique du concours AtCoder Débutant 180
Résoudre des maths avec Python
Concours AtCoder pour débutants 156 WriteUp
Critique du concours AtCoder pour débutant 177
AtCoder Débutant Contest 168 Critique
Résoudre ABC159-D en Python
Critique du concours AtCoder
Concours AtCoder pour débutants 167
Critique du concours AtCoder pour débutant 172
Concours AtCoder Débutant 183 Remarque
Critique du concours AtCoder
Concours AtCoder Débutant 184 Remarque
AtCoder Débutant Contest 175 Critique
Critique du concours AtCoder
Critique du concours AtCoder Beginner Contest 153
Critique du concours AtCoder pour débutant 156
AtCoder Débutant Contest 161 Critique