結果
問題 | No.2527 H and W |
ユーザー | Koi |
提出日時 | 2023-11-03 22:01:04 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 183 ms / 2,000 ms |
コード長 | 795 bytes |
コンパイル時間 | 151 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 212,828 KB |
最終ジャッジ日時 | 2024-09-25 20:17:55 |
合計ジャッジ時間 | 5,346 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 23 |
ソースコード
Mod=998244353 H,W,K=map(int,input().split()) def make_divisors(n): lower_divisors , upper_divisors = [], [] i = 1 while i*i <= n: if n % i == 0: lower_divisors.append(i) if i != n // i: upper_divisors.append(n//i) i += 1 return lower_divisors + upper_divisors[::-1] l=make_divisors(K) # print(l) facts=[] inv_facts=[] t=1 for i in range(10**6+1): facts.append(t) t=t*(i+1)%Mod inv_facts.append(pow(facts[10**6],-1,Mod)) for i in range(10**6): inv_facts.append(inv_facts[-1]*(10**6-i)%Mod) inv_facts.reverse() ans=0 for s in l: a=s b=K//a if(a>H or b>W): continue else: ans+=(facts[H]*inv_facts[a]*inv_facts[H-a]%Mod)*(facts[W]*inv_facts[b]*inv_facts[W-b]%Mod)%Mod print(ans%Mod)