提出 #52267196
ソースコード 拡げる
mod = 998244353
def fact(n):
res = n
a = []
i = 2
while i*i <= res:
if res % i == 0:
cnt = 0
while res % i == 0:
cnt += 1
res //= i
a.append((i, cnt))
i += 1
if res != 1:
a.append((res, 1))
return a
N, M = map(int, input().split())
A = list(map(int, input().split()))
f = fact(M)
K = len(f)
cnt = [0]*(1 << K)
for i in A:
if M % i != 0:
continue
bit = 0
for j in range(K):
p, e = f[j]
if i % (p**e) == 0:
bit |= 1 << j
cnt[bit] += 1
# ゼータ変換
for i in range(K):
for j in range(1 << K):
if (j >> i) & 1 == 0:
cnt[j | (1 << i)] += cnt[j]
h = [pow(2, cnt[i], mod) for i in range(1 << K)]
# メビウス変換
for i in range(K):
for j in range(1 << K):
if (j >> i) & 1 == 0:
h[j | (1 << i)] -= h[j]
h[j | (1 << i)] %= mod
ans = h[(1 << K)-1]
if M == 1:
ans -= 1
print(ans % mod)
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Subsequence LCM |
| ユーザ | toam |
| 言語 | Python (PyPy 3.10-v7.3.12) |
| 得点 | 1 |
| コード長 | 1073 Byte |
| 結果 | AC |
| 実行時間 | 386 ms |
| メモリ | 126340 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1 / 1 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All | 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 02_big_01.txt, 02_big_02.txt, 02_big_03.txt, 02_big_04.txt, 02_big_05.txt, 02_big_06.txt, 02_big_07.txt, 02_big_08.txt, 02_big_09.txt, 02_big_10.txt, 02_big_11.txt, 02_big_12.txt, 02_big_13.txt, 02_big_14.txt, 02_big_15.txt, 02_big_16.txt, 02_big_17.txt, 02_big_18.txt, 02_big_19.txt, 02_big_20.txt, 02_big_21.txt, 02_big_22.txt, 02_big_23.txt, 02_big_24.txt, 02_big_25.txt, 02_big_26.txt, 02_big_27.txt, 02_big_28.txt, 02_big_29.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_sample_01.txt | AC | 61 ms | 76464 KiB |
| 00_sample_02.txt | AC | 60 ms | 76296 KiB |
| 00_sample_03.txt | AC | 61 ms | 76380 KiB |
| 01_small_01.txt | AC | 61 ms | 76348 KiB |
| 01_small_02.txt | AC | 62 ms | 76376 KiB |
| 01_small_03.txt | AC | 62 ms | 76264 KiB |
| 01_small_04.txt | AC | 61 ms | 76488 KiB |
| 01_small_05.txt | AC | 61 ms | 76408 KiB |
| 02_big_01.txt | AC | 117 ms | 115496 KiB |
| 02_big_02.txt | AC | 126 ms | 115760 KiB |
| 02_big_03.txt | AC | 121 ms | 115768 KiB |
| 02_big_04.txt | AC | 115 ms | 115728 KiB |
| 02_big_05.txt | AC | 133 ms | 115588 KiB |
| 02_big_06.txt | AC | 113 ms | 115888 KiB |
| 02_big_07.txt | AC | 116 ms | 115560 KiB |
| 02_big_08.txt | AC | 115 ms | 115880 KiB |
| 02_big_09.txt | AC | 127 ms | 115072 KiB |
| 02_big_10.txt | AC | 378 ms | 115932 KiB |
| 02_big_11.txt | AC | 137 ms | 115188 KiB |
| 02_big_12.txt | AC | 138 ms | 114920 KiB |
| 02_big_13.txt | AC | 137 ms | 114756 KiB |
| 02_big_14.txt | AC | 138 ms | 114888 KiB |
| 02_big_15.txt | AC | 138 ms | 114792 KiB |
| 02_big_16.txt | AC | 139 ms | 114816 KiB |
| 02_big_17.txt | AC | 151 ms | 114496 KiB |
| 02_big_18.txt | AC | 153 ms | 114812 KiB |
| 02_big_19.txt | AC | 153 ms | 114944 KiB |
| 02_big_20.txt | AC | 143 ms | 115052 KiB |
| 02_big_21.txt | AC | 138 ms | 115016 KiB |
| 02_big_22.txt | AC | 150 ms | 115048 KiB |
| 02_big_23.txt | AC | 386 ms | 114832 KiB |
| 02_big_24.txt | AC | 308 ms | 114812 KiB |
| 02_big_25.txt | AC | 98 ms | 114276 KiB |
| 02_big_26.txt | AC | 105 ms | 115252 KiB |
| 02_big_27.txt | AC | 103 ms | 114852 KiB |
| 02_big_28.txt | AC | 84 ms | 109400 KiB |
| 02_big_29.txt | AC | 103 ms | 126340 KiB |