#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10, M = 998244353;
int n, f[N], g[N], ans[N], phi[N], p[N], cnt, mu[N], vis[N];
void init() {
    phi[1] = mu[1] = 1;
    for (int i = 2; i <= n; i++) {
        if (!vis[i]) {
            p[++cnt] = i;
            phi[i] = i - 1;
            mu[i] = M - 1;
        }
        for (int j = 1; j <= cnt && p[j] * i <= n; j++) {
            vis[p[j] * i] = 1;
            if (i % p[j] == 0) {
                phi[p[j] * i] = phi[i] * p[j];
                break;
            }
            phi[p[j] * i] = phi[i] * (p[j] - 1);
            mu[p[j] * i] = (M - mu[i]) % M;
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j += i) {
            g[j] = (g[j] + 1ll * phi[j / i] * i) % M;
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j += i) {
            f[j] = (f[j] + 1ll * mu[j / i] * g[i]) % M;
        }
    }
    for (int i = 1; i <= n; i++) {
        for (int j = i; j <= n; j += i) {
            ans[j] = (ans[j] + 1ll * f[i] * (j / i)) % M;
        }
    }
}
int main() {
    scanf("%d", &n);
    init();
    for (int i = 1; i <= n; i++) {
        printf("%d ", ans[i]);
    }
    return 0;
}
``
## 题目描述定义函数 $fn = displaystylesum_i = 1^n sum_j = 1^n sum_k = 1^n i + j + k = n operatornamelcmi gcdj k$给定 $n$对于所有 $1 leq i leq n$求出所有 $fi bmod 998244353$ 的值。## 输入格式一行一个整数 $n$。## 输出格式一行$n$ 个整数表示所有 $fi

原文地址: https://www.cveoy.top/t/topic/dRzn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录