提出 #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
結果
AC × 3
AC × 37
セット名 テストケース
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