結果
問題 | No.129 お年玉(2) |
ユーザー |
![]() |
提出日時 | 2024-11-08 16:24:52 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 118 ms / 5,000 ms |
コード長 | 1,373 bytes |
コンパイル時間 | 310 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 77,184 KB |
最終ジャッジ日時 | 2024-11-08 16:24:59 |
合計ジャッジ時間 | 6,326 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
def seachPrimeNum(N):max = int(N**0.5)seachList = [i for i in range(2,N+1)]primeNum = []while seachList[0] <= max:primeNum.append(seachList[0])tmp = seachList[0]seachList = [i for i in seachList if i % tmp != 0]primeNum.extend(seachList)return primeNumdef adic(dic,x):if x in dic:dic[x] += 1else:dic[x] = 1returndef factorization(x):dic = {}for p in PL:if x in PL:adic(dic,x)return dicwhile x % p == 0:adic(dic,p)x //= pif x == 1:return dicMOD = 10 ** 9N = int(input()) // 1000M = int(input())mod = N % Mif mod == 0:print(1)exit()PL = seachPrimeNum(M)PL = set(PL)def comb(n, m):dic = {}ret = 1for i in range(m):F = factorization(i + 1)for k,v in F.items():if k in dic:dic[k] += velse:dic[k] = vfor i in range(m):F = factorization(n - i)for k,v in F.items():if k in dic:if dic[k] >= v:dic[k] -= vv = 0else:v -= dic[k]dic.pop(k)ret *= k ** vret %= MODreturn retprint(comb(M,mod))