Brechen Sie in 2 Minuten durch. Schreiben Sie einfach.
N = int(input())
if str(N).count('7') > 0:
print('Yes')
else:
print('No')
ABC162C - Sum of gcd of Tuples (Easy)
In 4 Minuten durchbrechen. Aus irgendeinem Grund habe ich zuerst das C-Problem gelöst. Es hat lange gedauert, weil das Richtersystem verstopft war und ich die Online-Ausführung nicht verwenden konnte. Nun, ich habe es nur gemäß der Problemstellung geschrieben, aber es scheint TLE zu sein Weil es so war, habe ich es einige Male modifiziert.
def main():
from math import gcd
K = int(input())
result = 0
for a in range(1, K + 1):
for b in range(1, K + 1):
t = gcd(a, b)
for c in range(1, K + 1):
result += gcd(t, c)
print(result)
main()
Brechen Sie in zweieinhalb Minuten durch. Fügen Sie nur Fizz, Buzz, FizzBuzz usw. hinzu.
N = int(input())
result = 0
for i in range(1, N + 1):
if i % 3 == 0 or i % 5 == 0:
continue
result += i
print(result)
Es brach in 24 Minuten durch. TLE1. N ≤ 4000, also dachte ich, es sei eine Doppelschleife. Als ich Naive machte, wurde es dreifach, aber es war nicht besonders schwierig, weil es kumulativ summiert werden kann.
def main():
N = int(input())
S = input()
rcs = [0] * N
gcs = [0] * N
bcs = [0] * N
for i in range(N):
if S[i] == 'R':
rcs[i] = 1
elif S[i] == 'G':
gcs[i] = 1
elif S[i] == 'B':
bcs[i] = 1
for i in range(1, N):
rcs[i] += rcs[i - 1]
gcs[i] += gcs[i - 1]
bcs[i] += bcs[i - 1]
result = 0
for i in range(N):
if S[i] == 'R':
for j in range(i + 1, N):
if S[j] == 'R':
continue
elif S[j] == 'G':
result += bcs[N - 1] - bcs[j]
t = 2 * j - i
if t < N and S[t] == 'B':
result -= 1
elif S[j] == 'B':
result += gcs[N - 1] - gcs[j]
t = 2 * j - i
if t < N and S[t] == 'G':
result -= 1
elif S[i] == 'G':
for j in range(i + 1, N):
if S[j] == 'G':
continue
elif S[j] == 'R':
result += bcs[N - 1] - bcs[j]
t = 2 * j - i
if t < N and S[t] == 'B':
result -= 1
elif S[j] == 'B':
result += rcs[N - 1] - rcs[j]
t = 2 * j - i
if t < N and S[t] == 'R':
result -= 1
elif S[i] == 'B':
for j in range(i + 1, N):
if S[j] == 'B':
continue
elif S[j] == 'R':
result += gcs[N - 1] - gcs[j]
t = 2 * j - i
if t < N and S[t] == 'G':
result -= 1
elif S[j] == 'G':
result += rcs[N - 1] - rcs[j]
t = 2 * j - i
if t < N and S[t] == 'R':
result -= 1
print(result)
main()
ABC162E - Sum of gcd of Tuples (Hard)
Ich konnte nicht durchbrechen. Ich dachte, ich könnte es lösen. Es tut mir leid.
Nachtrag: gcd (f (k, n) mit einer Folge von n Längen {A </ sub> 1 </ sub>, ..., A n </ sub>}, bestehend aus ganzen Zahlen größer oder gleich 1 und kleiner als oder gleich k Wenn A 1 </ sub>, ..., A n </ sub>) die Zahl 1 ist, lautet die Antwort ∑ i = 1..K </ sub> f (Etage) (K / i), N) * i.
N, K = map(int, input().split())
MOD = 10 ** 9 + 7
cache = {}
def f(k, n):
if k == 1:
return 1
if k in cache:
return cache[k]
result = pow(k, n, MOD)
for i in range(2, k + 1):
result -= f(k // i, n)
result %= MOD
cache[k] = result
return result
result = 0
for i in range(1, K + 1):
result += f(K // i, N) * i
result %= MOD
print(result)
Erläuterung Dies ist die angenommene Lösung von PDF.
N, K = map(int, input().split())
MOD = 10 ** 9 + 7
c = [0] * (K + 1)
for i in range(K, 0, -1):
t = pow(K // i, N, MOD)
for j in range(2, K // i + 1):
t -= c[i * j]
t %= MOD
c[i] = t
result = 0
for i in range(1, K + 1):
result += c[K // i] * i
result %= MOD
print(result)
Recommended Posts