📌

【ABC242】AtCoder Beginner Contest 242 A-D メモ【python】

2022/03/15に公開

https://atcoder.jp/contests/abc242

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