📌
【ABC242】AtCoder Beginner Contest 242 A-D メモ【python】
A - T-shirt
場合分けを丁寧に行う。
a, b, c, x = map(int, input().split())
if x <= a:
print(1.000000000000)
exit()
elif x > b:
print(0.000000000000)
else:
ans = c / (b - a)
print(ans)
B - Minimize Ordering
文字列を入力してソートして出力。
s = sorted(input())
print(*s, sep="")
C - 1111gal password
漸化式とDPで解く。dp[桁数][1-9]を作成して、dp[n][m] = dp[n-1][m-1]+dp[n-1][m]+dp[n-1][m+1]で入力の桁数まで求める。
ただし「1」の場合、dp[n][m] = dp[n-1][m]+dp[n-1][m+1]で「9」の場合、dp[n][m] = dp[n-1][m-1] + dp[n-1][m]というように範囲が変わることに注意。
n = int(input())
dp = [] # dp[桁数][0-8]
dp.append([2, 3, 3, 3, 3, 3, 3, 3, 2]) # 2桁目の個数 (i=0)
mod_n = 998244353
for i in range(1, 1000000):
maked_list = []
maked_list.append((dp[i - 1][0] + dp[i - 1][1]) % mod_n)
maked_list.append((dp[i - 1][0] + dp[i - 1][1] + dp[i - 1][2]) % mod_n)
maked_list.append((dp[i - 1][1] + dp[i - 1][2] + dp[i - 1][3]) % mod_n)
maked_list.append((dp[i - 1][2] + dp[i - 1][3] + dp[i - 1][4]) % mod_n)
maked_list.append((dp[i - 1][3] + dp[i - 1][4] + dp[i - 1][5]) % mod_n)
maked_list.append((dp[i - 1][4] + dp[i - 1][5] + dp[i - 1][6]) % mod_n)
maked_list.append((dp[i - 1][5] + dp[i - 1][6] + dp[i - 1][7]) % mod_n)
maked_list.append((dp[i - 1][6] + dp[i - 1][7] + dp[i - 1][8]) % mod_n)
maked_list.append((dp[i - 1][7] + dp[i - 1][8]) % mod_n)
dp.append(maked_list)
print(sum(dp[n - 2]) % mod_n)
Discussion