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