Résolvez ABC169 avec Python

introduction

C'était quatre complets de A à D.

Un problème

Problème

** Pensées ** Fais juste

a, b = map(int,input().split())
print(a*b)

Problème B

Problème

** Pensées ** Si 0 est inclus, le produit est 0, alors triez-les par ordre croissant.

n = int(input())
a = list(map(int,input().split()))

a.sort()
ans = 1
for i in range(n):
    ans *= a[i]
    if ans > 10**18:
        print(-1)
        quit()

print(ans)

Problème C

Problème

** Pensées ** Oui. À cause de ce type, la performance est tombée. Merde. Je m'inquiétais de la précision, j'ai donc utilisé le décimal. "Utilisons la quantification pour tronquer la décimale! C'est une promesse !!!!"

from decimal import *
a, b = input().split()

a = Decimal(a)
b = Decimal(b)
ans = a * b
ans = ans.quantize(Decimal(0),rounding=ROUND_FLOOR)
print(ans)

Problème D

Problème

** Pensées ** Pour le moment, factorisez $ N $ en facteurs premiers. Prenons le cas de l'exemple de cas 1. Factorisation de 24 en $ 2 ^ 3 * 3 ^ 1 $. Le nombre maximum d'opérations pouvant être effectuées à ce moment est de 2 $ ^ 1,2 ^ 2,3 ^ 1 $. $ 2 ^ 3 $ n'est pas une fraction de N, vous ne pouvez donc pas. La même chose est vraie pour 3 $ ^ 2 $. De là, nous pouvons voir qu'il faut ajouter pour que la partie exponentielle du facteur premier de $ N $ ne soit pas dépassée. (Exemple: dans le cas de 24, le nombre de 2 est 3 donc il va jusqu'à 1 + 2, et le nombre de 3 est 1 donc 1). Tout ce que vous avez à faire est de calculer combien de fois vous pouvez l'utiliser pour chaque facteur premier.

n = int(input())

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

if n == 1:
    print(0)
    quit()
f = factorization(n)
ans = 0
c = len(f)
for i in range(c):
    s = 0
    g = f[i][1]
    if g == 2:
        ans += 1
    else:
        for j in range(g):
            s += j + 1
            f[i][1] -= j+1
            if s > g:
                break
            ans += 1
print(ans)

Résumé

Tax_free détesté par C ces jours-ci. Je veux corriger l'habitude de soumettre en raison de la mort cérébrale lorsque de tels problèmes de précision surviennent. A bientôt, bonne nuit.

Recommended Posts

Résolvez ABC169 avec Python
Résoudre ABC175 D en Python
Résoudre Atcoder ABC169 A-D avec Python
Résoudre ABC036 A ~ C avec Python
Résoudre ABC037 A ~ C avec Python
Résolvez ABC146-C avec Python
Résoudre ABC098-C en Python
Résoudre ABC159-D en Python
Résolvez ABC160-E avec Python
ABC 157 D - Résolvez les suggestions d'amis en Python!
Je voulais résoudre ABC159 avec Python
Résoudre ABC165 A, B, D avec Python
Résolvez AtCoder ABC166 avec python
Atcoder ABC164 A-C en Python
Atcoder ABC167 A-D en Python
Résolvez des exercices Wooldridge en Python
Atcoder ABC166 A-E en Python
Résoudre les problèmes d'optimisation avec Python
Atcoder ABC169 A-E en Python
AtCoder ABC177 A-D avec python
Résoudre Atcoder ABC176 (A, B, C, E) en Python
Résoudre ABC163 A ~ C avec Python
Résoudre ABC166 A ~ D avec Python
Résoudre ABC168 A ~ C avec Python
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Résoudre des équations différentielles normales en Python
Débutant ABC154 (Python)
Quadtree en Python --2
Python en optimisation
Débutant ABC156 (Python)
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
AtCoder ABC 174 Python
Époque en Python
Discord en Python
Allemand en Python
nCr en python
N-Gram en Python
Programmation avec Python
Débutant ABC155 (Python)
Plink en Python
FizzBuzz en Python
Sqlite en Python
Débutant ABC157 (Python)
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.