[PYTHON] record de participation au concours 267 de yukicoder

record de participation au concours 267 de yukicoder

A 1236 main longue et courte main

L'aiguille longue et l'aiguille courte se rencontrent 11 fois en 12 heures. Naturellement, le nombre de secondes en 12 heures est divisé par 11. Le nombre de secondes est calculé comme le nombre de secondes à côté de l'heure actuelle. La différence est la réponse.

from bisect import bisect_left

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

x = [i * 12 * 60 * 60 // 11 for i in range(12)]
t = (A * 60 + B) % (12 * 60) * 60
print(x[bisect_left(x, t)] - t)

B 1237 EXP Multiple!

Si vous le lisez attentivement, ce n'est pas "le reste de la division de la réponse par 10 9 </ sup> + 7", mais "le reste de la division de la réponse par 10 9 </ sup> + 7" ouz. Ensuite, c'est facile à résoudre, beaucoup de gens se sont fait prendre à cause du nombre de personnes qui l'ont résolu (rires).

m = 1000000007


def make_factorial_table(n):
    result = [0] * (n + 1)
    result[0] = 1
    for i in range(1, n + 1):
        result[i] = result[i - 1] * i % m
    return result


N, *A = map(int, open(0).read().split())

A.sort()

if A[0] == 0:
    print(-1)
    exit()

if A[-1] >= 4:
    print(m)
    exit()

fac = make_factorial_table(3)

t = 1
for a in A:
    t *= pow(a, fac[a])
    if t > m:
        break
print(m % t)

Classe de sélection C 1238

À peu près au moment où j'ai dessiné K, je me suis dit: «Oh, j'ai résolu un problème similaire dans le passé», mais je n'ai pas pu le résoudre. [ABC044C --Takahashi-kun and Card](https://atcoder.jp/contests/ C'est presque la même chose que abc044 / tasks / arc060_a) (la différence entre la moyenne étant juste X et la moyenne étant X ou plus).

Si a i </ sub> = A i </ sub> -K, alors la question est de savoir combien de façons de choisir un total de i </ sub> de 0 ou plus. Vous pouvez facilement le trouver en faisant DP.

m = 1000000007

N, K, *A = map(int, open(0).read().split())

for i in range(N):
    A[i] -= K

dp = {}
dp[0] = 1
for a in A:
    for k in sorted(dp, reverse=True) if a >= 0 else sorted(dp):
        dp.setdefault(k + a, 0)
        dp[k + a] += dp[k]

dp[0] -= 1
print(sum(dp[k] for k in dp if k >= 0) % m)

Recommended Posts

record de 256 entrées
record de participation au concours 267 de yukicoder
record du concours 264 de yukicoder
yukicoder contest 245 record d'inscription
record de participation au concours yukicoder 250
record du concours 262
yukicoder contest 265 Record de participation
concours yukicoder 266 Record de participation
yukicoder contest 263 Record de participation
concours yukicoder 243 Record de participation
yukicoder contest 273 Record de participation
concours yukicoder 252 Record de participation
concours yukicoder 259 Record de participation
concours yukicoder 249 Record de participation
concours yukicoder 271 Record de participation
Concours yukicoder 251 Record de participation
yukicoder contest 242 Record de participation
concours yukicoder 241 Record de participation
yukicoder contest 257 Record de participation
Concours yukicoder 254 Record de participation
yukicoder contest 246 Record de participation
concours yukicoder 275 Record de participation
Concours yukicoder 274 Record de participation
concours yukicoder 247 Record de participation
yukicoder contest 261 Record de participation
yukicoder contest 248 Record de participation
yukicoder contest 270 (concours de mathématiques) Record de participation
yukicoder contest 272 (Weird math contest) Record de participation
concours yukicoder 259 avis
concours yukicoder 264 avis
concours yukicoder 261 avis
concours yukicoder 267 avis
concours yukicoder 266 avis
concours yukicoder 263 avis
yukicoder contest 268 avis
AtCoder Beginner Contest 175 Inscription virtuelle