Der lange und der kurze Zeiger treffen sich 11 Mal in 12 Stunden. Natürlich wird die Anzahl der Sekunden in 12 Stunden durch 11 geteilt. Die Anzahl der Sekunden wird als Anzahl der Sekunden neben der aktuellen Zeit berechnet. Der Unterschied ist die Antwort.
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)
Wenn Sie es sorgfältig lesen, ist es nicht "der Rest der Division der Antwort durch 10 </ sup> 9 </ sup> + 7", sondern "der Rest der Division der Antwort durch 10 9 </ sup> + 7" oder. Dann ist es einfach zu lösen. Viele Leute haben sich aufgrund der Anzahl der Leute, die es gelöst haben, darin gefangen (lacht).
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)
Ungefähr zu der Zeit, als ich K zeichnete, dachte ich: "Oh, ich habe in der Vergangenheit ein ähnliches Problem gelöst", aber ich konnte es nicht lösen. [ABC044C --Takahashi-kun and Card](https://atcoder.jp/contests/ Es ist fast dasselbe wie abc044 / task / arc060_a) (der Unterschied zwischen dem Durchschnitt von nur X und dem Durchschnitt von X oder mehr).
Wenn a i </ sub> = A i </ sub> -K ist, ist die Frage, wie viele Möglichkeiten es gibt, insgesamt ein i </ sub> von 0 oder mehr auszuwählen. Sie können es leicht finden, indem Sie DP machen.
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