C'était la pire performance de tous les temps: (
A: Multiplication 1 Simplement fais-le.
ABC169a.py
a,b=map(int,input().split())
print(a*b)
B: Multiplication 2 Même si $ N <10 ^ 5 $, si vous le tournez normalement, il devient TLE. Cependant, j'ai essayé de sortir de la boucle en cours de route. ~~ Le calcul du débordement peut prendre un certain temps (bien que ce soit WA quand il déborde en premier lieu). ~~
ABC169b.py
n=int(input())
a=list(map(int,input().split()))
ans=1
if 0 in a:
    print(0)
    exit()
for i in a:
   ans*=i
   if ans>10**18:
    print(-1)
    exit()
print(ans)
C: Multiplication 3 Commentaire AC. Si vous pensez avoir besoin d'un calcul de haute précision, utilisez simplement Decimal au lieu de Float lorsque vous traitez avec des types à virgule flottante. Problème de connaissance.
ABC169c.py
from decimal import Decimal
from math import floor
a,b=map(Decimal,input().split())
print(floor(a*b))
D: Div Game
Combien de types de $ z $ puis-je préparer? En d'autres termes.
Puisque $ z $ peut être exprimé par la puissance des facteurs premiers de $ N 
ABC169d.py
def factorization(n):
    arr = []
    temp = n
    for i in range(2, int(-(-n**0.5//1))+1):
        if temp%i==0:
            cnt=0
            while temp%i==0:
                cnt+=1
                temp //= i
            arr.append([i, cnt])
    if temp!=1:
        arr.append([temp, 1])
    if arr==[]:
        arr.append([n, 1])
    return arr
    
a=factorization(int(input()))
b=[1,3,6,10,15,21,28,36,43]
ans=0
if len(a)==1 and a[0][0]==1:
    print(0)
    exit()
for i in a:
    for j in range(len(b)):
        if i[1]<b[j]:
            ans+=j
            break
print(ans)
E: Count Median Une valeur qui peut être considérée comme la valeur médiane globale entre la valeur médiane de l'ensemble de A et la valeur médiane de l'ensemble de B. Si N est pair, ce sera par incréments de 0,5, et s'il est impair, ce sera par incréments de 1.
ABC169e.py
def median(q):
    l=len(q)
    q=sorted(q,reverse=True)
    if l%2==0:
        return (q[int(l/2)]+q[int(l/2)-1])/2
    else:
        return q[int((l+1)/2-1)]
n=int(input())
a=[]
b=[]
for i in range(n):
   x,y=map(int,input().split())
   a.append(x)
   b.append(y)
   
med_a=median(a)
med_b=median(b)
if n%2==0:
    print(int(2*(med_b-med_a)+1))
    
else:
    print((med_b-med_a)+1)
Au fait, personnellement, je n'aime pas le format des questions B-C cette fois, bien qu'il s'agisse d'environ huit WA. Si vous utilisez le même esprit, j'aimerais penser à un algorithme qui brise les contraintes, pas aux contraintes d'implémentation elles-mêmes ... Si ces questions continuent à se poser, j'ai l'impression qu'Atcoder n'est pas recommandé à mes amis novices. C'était.
Recommended Posts