Submission #28703931


Source Code Expand

#include <bits/stdc++.h>
#include <atcoder/modint>
using namespace std;
using namespace atcoder;

using ll = long long;
using Fp = modint998244353;

int main() {
    int n;
    ll m;
    cin >> n >> m;
    vector<ll> d(n);
    for (ll& x : d) {
        cin >> x;
    }
    vector<Fp> edge(n + 1);
    edge[1] = 1;
    for (int i = 2; i <= n; ++i) {
        edge[i] = -edge[i - 1] * (i - 1);
    }
    vector<Fp> comp(1 << n);
    for (int set = 1; set < (1 << n); ++set) {
        ll lcm = 1;
        for (int i = 0; i < n; ++i) {
            if (set >> i & 1) {
                lcm /= gcd(lcm, d[i]);
                if (lcm > m / d[i]) {
                    lcm = m + 1;
                    break;
                }
                lcm *= d[i];
            }
        }
        comp[set] = Fp(m / lcm) * edge[__builtin_popcount(set)];
    }
    vector<Fp> count(1 << n);
    for (int set = 1; set < (1 << n); ++set) {
        int min = __builtin_ctz(set);
        count[set] = comp[set];
        for (int sub = set; ((sub -= 1) &= set) > 0;) {
            if (sub >> min & 1) {
                count[set] += comp[sub] * count[set & ~sub];
            }
        }
    }
    cout << count[(1 << n) - 1].val() << '\n';
}

Submission Info

Submission Time
Task Ex - Distinct Multiples
User KoD
Language C++ (GCC 9.2.1)
Score 600
Code Size 1267 Byte
Status AC
Exec Time 98 ms
Memory 3784 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 39
Set Name Test Cases
Sample example_00.txt, example_01.txt, example_02.txt
All example_00.txt, example_01.txt, example_02.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt
Case Name Status Exec Time Memory
example_00.txt AC 5 ms 3596 KiB
example_01.txt AC 2 ms 3548 KiB
example_02.txt AC 2 ms 3492 KiB
test_00.txt AC 92 ms 3584 KiB
test_01.txt AC 94 ms 3552 KiB
test_02.txt AC 2 ms 3596 KiB
test_03.txt AC 48 ms 3492 KiB
test_04.txt AC 95 ms 3496 KiB
test_05.txt AC 95 ms 3604 KiB
test_06.txt AC 3 ms 3544 KiB
test_07.txt AC 2 ms 3608 KiB
test_08.txt AC 8 ms 3456 KiB
test_09.txt AC 3 ms 3584 KiB
test_10.txt AC 2 ms 3452 KiB
test_11.txt AC 2 ms 3452 KiB
test_12.txt AC 16 ms 3512 KiB
test_13.txt AC 6 ms 3580 KiB
test_14.txt AC 95 ms 3496 KiB
test_15.txt AC 98 ms 3584 KiB
test_16.txt AC 96 ms 3712 KiB
test_17.txt AC 94 ms 3776 KiB
test_18.txt AC 25 ms 3556 KiB
test_19.txt AC 8 ms 3376 KiB
test_20.txt AC 11 ms 3492 KiB
test_21.txt AC 6 ms 3432 KiB
test_22.txt AC 5 ms 3612 KiB
test_23.txt AC 2 ms 3588 KiB
test_24.txt AC 89 ms 3532 KiB
test_25.txt AC 88 ms 3496 KiB
test_26.txt AC 2 ms 3608 KiB
test_27.txt AC 2 ms 3592 KiB
test_28.txt AC 91 ms 3640 KiB
test_29.txt AC 4 ms 3412 KiB
test_30.txt AC 9 ms 3656 KiB
test_31.txt AC 2 ms 3588 KiB
test_32.txt AC 3 ms 3448 KiB
test_33.txt AC 2 ms 3544 KiB
test_34.txt AC 85 ms 3684 KiB
test_35.txt AC 82 ms 3784 KiB