[PYTHON] AtCoder Beginner Contest 169 Teilnahmebericht

AtCoder Beginner Contest 169 Teilnahmebericht

ABC169A - Multiplication 1

Brechen Sie in anderthalb Minuten durch. Schreiben Sie einfach. Es hat viel Zeit in Anspruch genommen, da der Codetest nicht einfach ausgeführt werden konnte.

A, B = map(int, input().split())

print(A * B)

ABC169B - Multiplication 2

In 3 Minuten durchbrechen. Es ist ein Problem, dass sogar eine 64-Bit-Ganzzahl überläuft, aber es ist einfach, weil Sie in Python an nichts denken müssen. Vergessen Sie nicht, zu sortieren, um mit 0 zu beginnen. OK!

N = int(input())
A = list(map(int, input().split()))

limit = 10 ** 18
A.sort()
result = A[0]
for a in A[1:]:
    result *= a
    if result > limit:
        print(-1)
        exit()
print(result)

ABC169C - Multiplication 3

Es brach in 3 Minuten durch. In dem Moment, als ich A ≤ 10 15 sah, wurde mir klar, dass es doppelt war, und ich kam auf die Dezimalzahl (10 15 ist 10) > 3 </ sup> ≒ 2 10 </ sup> Also ungefähr ≒ 2 50 </ sup>, also liegt es nahe am unveränderlichen 52-Bit-Teil von double, und Sie können sehen, dass es eine Handlung ist, es zu überlaufen. .)

from decimal import Decimal

A, B = map(Decimal, input().split())

print(int(A * B))

ABC169D - Div Game

Es brach in 22,5 Minuten durch, WA1. Ich dachte, ich würde das Eratostenes-Sieb vorerst aufkleben, aber ich konnte es nicht aufkleben, weil N ≤ 10 </ sup> 12 </ sup>, also begann ich damit, auf den Prozess bis sqrt (N) umzusteigen. Ich habe p e </ sup> in aufgezählt, und als ich es in der Reihenfolge des Schlagens aufteilte und den verbleibenden Wert verarbeitete, schlug ich fehl und bekam WA, aber vielleicht ist dieser Code auch eine Lüge. (Bleibt richtig) Scheint es, als müssten Sie überprüfen, ob es sich um eine Primzahl handelt?)

from math import sqrt

N = int(input())

rn = int(sqrt(N))
sieve = [0] * (rn + 1)
sieve[0] = -1
sieve[1] = -1
t = [0] * (rn + 1)
for i in range(2, rn + 1):
    if sieve[i] != 0:
        continue
    sieve[i] = i
    j = i
    while j < rn + 1:
        t[j] = 1
        j *= i
    for j in range(i * i, rn + 1, i):
        if sieve[j] == 0:
            sieve[j] = i

result = 0
last = -1
for i in range(2, rn + 1):
    if t[i] == 0:
        continue
    if N % i == 0:
        result += 1
        N //= i
        last = i
if N != 1 and N > rn:
    result += 1
print(result)

Nachtrag: Ich könnte mit der zuvor geschriebenen Primfaktorisierungsfunktion schneller schreiben. Fehler.

def prime_factorize(n):
    result = []
    if n % 2 == 0:
        t = 0
        while n % 2 == 0:
            n //= 2
            t += 1
        result.append((2, t))
    for i in range(3, int(n ** 0.5) + 1, 2):
        if n % i != 0:
            continue
        t = 0
        while n % i == 0:
            n //= i
            t += 1
        result.append((i, t))
        if n == 1:
            break
    if n != 1:
        result.append((n, 1))
    return result


N = int(input())

result = 0
for p, e in prime_factorize(N):
    i = 1
    while e >= i:
        result += 1
        e -= i
        i += 1
print(result)

ABC169E - Count Median

Ich konnte nicht durchbrechen. Ich habe über eine Stunde nachgedacht, aber je mehr ich darüber nachdenke, desto schwieriger wird es.

PS: Ich dachte, dass es während des Wettbewerbs einen möglichen Medianwert zwischen den Medianwerten von A i </ sub> und B i </ sub> gibt, aber ich bin sicher, dass dies alle sind. Ich konnte es nicht bekommen. Es war jedoch möglicherweise notwendig, darauf vorbereitet zu sein, es mit einer faulen Lesung auszuspucken. Mit Yukicoder werfe ich es hoihoi, weil es keine Pena gibt (lacht). X <sub Es heißt, wenn Sie> i </ sub> mit A i </ sub> beginnen und einen von ihnen um 1 erhöhen, erhöht sich der Medianwert nicht oder um 1 (oder 0,5, wenn er gerade ist). Ich kann verstehen, dass es wahr ist ...

N = int(input())
A = [None] * N
B = [None] * N
for i in range(N):
    a, b = map(int, input().split())
    A[i] = a
    B[i] = b

A.sort()
B.sort()

if N % 2 == 0:
    b = (B[N // 2] + B[(N - 1) // 2]) / 2
    a = (A[N // 2] + A[(N - 1) // 2]) / 2
    print(int((b - a) * 2 + 1))
else:
    print(B[N // 2] - A[N // 2] + 1)

Recommended Posts

AtCoder Beginner Contest 161 Teilnahmebericht
AtCoder Beginner Contest 151 Teilnahmebericht
AtCoder Beginner Contest 176 Teilnahmebericht
AtCoder Beginner Contest 154 Teilnahmebericht
AtCoder Beginner Contest 166 Teilnahmebericht
AtCoder Beginner Contest 153 Teilnahmebericht
AtCoder Beginner Contest 145 Teilnahmebericht
AtCoder Beginner Contest 184 Teilnahmebericht
AtCoder Beginner Contest 165 Teilnahmebericht
AtCoder Beginner Contest 160 Teilnahmebericht
AtCoder Beginner Contest 169 Teilnahmebericht
AtCoder Beginner Contest 178 Teilnahmebericht
AtCoder Beginner Contest 163 Teilnahmebericht
AtCoder Beginner Contest 159 Teilnahmebericht
AtCoder Beginner Contest 164 Teilnahmebericht
AtCoder Beginner Contest 168 Teilnahmebericht
AtCoder Beginner Contest 150 Teilnahmebericht
AtCoder Beginner Contest 158 Teilnahmebericht
AtCoder Beginner Contest 180 Teilnahmebericht
AtCoder Beginner Contest 156 Teilnahmebericht
AtCoder Beginner Contest 162 Teilnahmebericht
AtCoder Beginner Contest 157 Teilnahmebericht
AtCoder Beginner Contest 167 Teilnahmebericht
AtCoder Beginner Contest 179 Teilnahmebericht
AtCoder Anfängerwettbewerb 182
AtCoder Anfängerwettbewerb 146 Teilnahmebericht
AtCoder Beginner Contest 152 Teilnahmebericht
AtCoder Beginner Contest 155 Teilnahmebericht
AtCoder Beginner Contest 174 Teilnahmebericht
AtCoder Beginner Contest 171 Teilnahmebericht
AtCoder Beginner Contest 149 Teilnahmebericht
AtCoder Anfängerwettbewerb 148 Teilnahmebericht
AtCoder Beginner Contest 170 Teilnahmebericht
AtCoder Beginner Contest 183 Teilnahmebericht
AtCoder Beginner Contest # 003 Teilnahmehinweis
AtCoder Grand Contest 041 Teilnahmebericht
AtCoder Grand Contest 040 Teilnahmebericht
AtCoder Regular Contest 105 Teilnahmebericht
AtCoder Regular Contest 104 Teilnahmebericht
Eintragsdatensatz für den ACL-Anfängerwettbewerb
Atcoder Anfängerwettbewerb 146 Teilnahme Tagebuch
Teilnahmebericht des AtCoder Chokudai Contest 005
AtCoder Grand Contest 047 Teilnahmebericht
AtCoder Anfängerwettbewerb 177
AtCoder Anfängerwettbewerb 172
AtCoder Anfängerwettbewerb 173
Atcoder Anfänger Wettbewerb 153
Teilnahmebericht des AtCoder HHKB Programmierwettbewerbs 2020
Teilnahmebericht des AtCoder Acing Programming Contest 2020
Teilnahmebericht des AtCoder Keyence Programming Contest 2020
Teilnahmebericht des AtCoder Panasonic Programming Contest 2020
AtCoder Anfängerwettbewerb 152 Rückblick
AtCoder Anfängerwettbewerb 181 Hinweis
AtCoder Beginner Contest 160 Bewertung
AtCoder Anfängerwettbewerb 178 Bewertung
AtCoder Anfängerwettbewerb 180 Hinweis
AtCoder Anfängerwettbewerb 166 Bewertung
AtCoder Anfängerwettbewerb 167 Bewertung