結果
問題 | No.2963 Mecha DESU |
ユーザー |
|
提出日時 | 2024-11-16 17:05:56 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 247 ms / 2,000 ms |
コード長 | 1,129 bytes |
コンパイル時間 | 526 ms |
コンパイル使用メモリ | 82,688 KB |
実行使用メモリ | 114,176 KB |
最終ジャッジ日時 | 2024-11-16 17:06:18 |
合計ジャッジ時間 | 10,518 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 57 |
ソースコード
from collections import deque, defaultdict as dd from copy import deepcopy from heapq import heappop, heappush, heappushpop, heapify INF = 1 << 60 MOD = 998244353 def fast_mod_pow(x, p, m): res = 1 t = x z = p while z > 0: if z % 2 == 1: res = (res * t) % m t = (t * t) % m z //= 2 return res def extended_gcd(a, b): if b == 0: return a, 1, 0 else: g, x, y = extended_gcd(b, a % b) return g, y, x - (a // b) * y def mod_inverse(a, m): _, x, _ = extended_gcd(a, m) return (x % m + m) % m def main(): n, m, k = map(int, input().split()) a = list(map(int, input().split())) memo = [0 for _ in range(n+1)] memo[0] = 1 dic = dd(lambda: 0) for v in a: dic[v] += 1 for key, v in dic.items(): for i in range(1, n//key+1): memo[key*i] += v p = [fast_mod_pow(i, k, MOD)for i in range(m+1)] div = mod_inverse(p[m], MOD) ans = 0 for i in range(1, n+1): ans = (ans+(MOD+1-p[m-memo[i]]*div%MOD)%MOD)%MOD print(ans) if __name__ == "__main__": main()