提出 #23344585


ソースコード 拡げる

// agc038_c
// LCMs

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

#define nl "\n"
#define nf endl
#define ll long long
#define pb push_back
#define _ << ' ' <<

#define INF (ll)1e18
#define mod 998244353
#define maxn 1000010

ll i, i1, j, k, k1, t, n, m, res, flag[10], a[maxn], b;
ll f[maxn], s1[maxn], s2[maxn], tt[maxn], dp[maxn];
ll nv[maxn];

ll fxp(ll b, ll e) {
    ll r;
    if (e == 0) return 1;
    if (e % 2) {
        r = fxp(b, e - 1); return (b * r) % mod;
    } else {
        r = fxp(b, e / 2); return (r * r) % mod;
    }
}

ll inv(ll x) {
    return fxp(x, mod - 2);
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    #if !ONLINE_JUDGE && !EVAL
        ifstream cin("input.txt");
        ofstream cout("output.txt");
    #endif

    for (i = 1; i < maxn; i++) nv[i] = inv(i);

    cin >> n;
    for (i = 1; i <= n; i++) {
        cin >> a[i]; f[a[i]]++;
    }

    for (i = 1; i < maxn; i++) {
        for (j = i; j < maxn; j += i) {
            s1[i] += (f[j] * j); s1[i] %= mod;
            s2[i] += (f[j] * j * j); s2[i] %= mod;
        }
    }

    for (i = 1; i < maxn; i++) {
        tt[i] = (s1[i] * s1[i] - s2[i] + mod) % mod;
        if (s1[i] != 0 || s2[i] != 0) {
            // cout << "tt " << i _ s1[i] _ s2[i] _ tt[i] << nl;
        }
    }

    for (i = maxn - 1; i >= 1; i--) {
        dp[i] = tt[i];
        for (j = 2 * i; j < maxn; j += i) {
            dp[i] = (dp[i] - dp[j] + mod) % mod;
        }
        res += (dp[i] * nv[i]); res %= mod;
        if (dp[i] != 0) {
            // cout << "dp " << i _ dp[i] << nl;
        }
    }

    res *= nv[2]; res %= mod;

    cout << res << nl;

    return 0;
}

提出情報

提出日時
問題 C - LCMs
ユーザ TheScrasse
言語 C++ (GCC 9.2.1)
得点 700
コード長 1744 Byte
結果 AC
実行時間 481 ms
メモリ 51912 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 700 / 700
結果
AC × 3
AC × 21
セット名 テストケース
Sample sample-01.txt, sample-02.txt, sample-03.txt
All 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, sample-01.txt, sample-02.txt, sample-03.txt
ケース名 結果 実行時間 メモリ
01-01.txt AC 426 ms 42564 KiB
01-02.txt AC 473 ms 51264 KiB
01-03.txt AC 469 ms 51588 KiB
01-04.txt AC 437 ms 44920 KiB
01-05.txt AC 468 ms 51476 KiB
01-06.txt AC 470 ms 51036 KiB
01-07.txt AC 466 ms 50612 KiB
01-08.txt AC 472 ms 51356 KiB
01-09.txt AC 463 ms 50768 KiB
01-10.txt AC 476 ms 51848 KiB
01-11.txt AC 474 ms 51896 KiB
01-12.txt AC 479 ms 51884 KiB
01-13.txt AC 475 ms 51808 KiB
01-14.txt AC 475 ms 51912 KiB
01-15.txt AC 476 ms 51816 KiB
01-16.txt AC 478 ms 51892 KiB
01-17.txt AC 481 ms 51860 KiB
01-18.txt AC 433 ms 44128 KiB
sample-01.txt AC 425 ms 42512 KiB
sample-02.txt AC 422 ms 42572 KiB
sample-03.txt AC 418 ms 42576 KiB