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)
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)
À 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