Seuls A et B peuvent être résolus. Je n'ai pas d'autre choix que de résoudre le problème de manière simple tout en étant consterné par mon insoluble. Cette fois, c'était une séance de mathématiques (?).
https://atcoder.jp/contests/abc178
A. Not
x = int(input())
if x == 0:
print(1)
else:
print(0)
Je pense qu'il y a plusieurs façons de l'écrire, mais je l'ai honnêtement écrit avec une déclaration if.
B. Product Max
a, b, c, d = map(int, input().split())
answer = 0
if a < 0 and 0 <= b:
if c < 0 and 0 <= d:
answer = max(a * c, b * d)
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * c
elif 0 <= a and 0 <= b:
if c < 0 and 0 <= d:
answer = b * d
elif 0 <= c and 0 <= d:
answer = b * d
elif c < 0 and d < 0:
answer = a * d
elif a < 0 and b < 0:
if c < 0 and 0 <= d:
answer = a * c
elif 0 <= c and 0 <= d:
answer = b * c
elif c < 0 and d < 0:
answer = a * c
print(answer)
Au milieu de la rédaction de l'instruction if, j'ai pensé "je peux le faire avec max ...", mais j'ai écrit tous les cas sans revenir en arrière. Même si vous ne le divisez pas comme ça, vous pouvez le résoudre avec max comme indiqué ci-dessous.
a, b, c, d = map(int, input().split())
answer = max(a*c, a*d, b*c, b*d)
print(answer)
C. Ubiquity
MOD = 10**9 + 7
N = int(input())
#Au moins 0 est inclus
in0 = 10**N - 9**N
#Au moins 0 est inclus
in9 = 10**N - 9**Nu
#Il y a 0 ou 9
0and9 = 10**N - 8**N
answer = in0 + in9 - 0and9
print(answer%MOD)
J'avais une réponse à la gorge, mais pour une raison quelconque, je ne pouvais pas trouver de réponse. Puisqu'il ne peut pas être compté normalement, il est calculé en soustrayant du tout. L'image ci-dessous.
D. Redistribution
MOD = 10**9 + 7
S = int(input())
dp = [0] * (S+1)
dp[0] = 1
for i in range(1, S+1):
for j in range(0, (i-3)+1):
dp[i] += dp[j]
dp[i] %= MOD
print(dp[S])
Réponse de Snuke Tel quel.
dp
Je sais seulement ce que je savais.
Si vous regardez l'explication, vous pouvez voir que c'est "certainement", mais quand on vous dit en fait de le résoudre dans le délai imparti, vous ne pouvez pas résoudre `` DP```.
Pas assez de formation ...
E. Dist Max
N = int(input())
a, b = [], []
for i in range(N):
x, y = map(int, input().split())
a.append(x+y)
b.append(x-y)
a.sort()
b.sort()
answer = max(a[-1] - a[0], b[-1] - b[0])
print(answer)
C'est aussi la réponse de snuke telle quelle.
J'ai appris à transformer la formule de max.
Recommended Posts