ABC178 - Atcoder/Python精進のための解説メモ
2022/12/27
ABC178 - A.Not
AtCoder公式 | ABC178 - A.Not解答
x = int(input())
print(x ^ 1)
要点解説メモ
- ifで条件分岐させるだけ
- bit全探索でもよく出るので、排他的論理和(XOR)を使えるようになっておくと早くて良さそう
ABC178 - B.Product Max
AtCoder公式 | ABC178 - B.Product Max解答
a, b, c, d = map(int, input().split())
print(max(a * c, a * d, b * c, b * d))
要点解説メモ
- 端同士をかけた時のいずれかが最大になることに、すぐ気づきたいところ
ABC178 - C.Ubiquity
AtCoder公式 | ABC178 - C.Ubiquity解答
n = int(input())
mod = 1000000007
ans = pow(10, n, mod) - pow(9, n, mod) * 2 + pow(8, n, mod)
print(ans % mod)
要点解説メモ
- 場合の数のよくある問題
- AかつBを出すために、全体-A以外-B以外+AかつB以外を計算するやつ
- 使わないと忘れるので、ベン図を書いて考えるようにしたいところ
ABC178 - D.Redistribution
AtCoder公式 | ABC178 - D.Redistribution解答
s = int(input())
dp = [0] * (s + 4)
mod = 1000000007
dp[0] = 1
dp[1] = 0
dp[2] = 0
dp[3] = 1
if s < 4:
print(dp[s])
else:
for i in range(4, s + 1):
dp[i] = (dp[i - 1] + dp[i - 3]) % mod
print(dp[s])
要点解説メモ
- DPでは特に、実験してみる→漸化式を立てて簡易化する、という数学的な思考をきちんと実行する
- 漸化式ってことは条件分岐がありそう、をすぐ思えるようにしておく