結果
| 問題 |
No.129 お年玉(2)
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:37:35 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,082 bytes |
| コンパイル時間 | 894 ms |
| コンパイル使用メモリ | 82,900 KB |
| 実行使用メモリ | 76,388 KB |
| 最終ジャッジ日時 | 2025-03-31 17:38:26 |
| 合計ジャッジ時間 | 4,867 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 43 WA * 3 |
ソースコード
MOD = 10**9
def factor_out_2_5(n):
a = 0
while n % 2 == 0 and n != 0:
a += 1
n //= 2
b = 0
while n % 5 == 0 and n != 0:
b += 1
n //= 5
return a, b, n
def compute_combination(n, k, mod):
if k < 0 or k > n:
return 0
if k == 0 or k == n:
return 1 % mod
sum2 = 0
sum5 = 0
res = 1
for i in range(1, k + 1):
numerator = n - i + 1
denominator = i
a_n, b_n, num_rest = factor_out_2_5(numerator)
a_d, b_d, den_rest = factor_out_2_5(denominator)
sum2 += a_n - a_d
sum5 += b_n - b_d
res = (res * num_rest) % mod
inv_den_rest = pow(den_rest, -1, mod)
res = (res * inv_den_rest) % mod
if sum2 >= 9 or sum5 >= 9:
return 0
part2 = pow(2, sum2, mod)
part5 = pow(5, sum5, mod)
res = (res * part2) % mod
res = (res * part5) % mod
return res
# Read input
N = int(input())
M = int(input())
total = N // 1000
r = total % M
if r == 0:
print(1)
else:
print(compute_combination(M, r, MOD))
lam6er