日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

小 Q 与函数求和 1(牛客练习赛 81 E)

發(fā)布時(shí)間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小 Q 与函数求和 1(牛客练习赛 81 E) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

小 Q 與函數(shù)求和 1

∑i=1n∑j=1n?(ijgcd?(i,j)K)∑i=1n∑j=1ngcd?(i,j)K?(ij)∑i=1n∑j=1ngcd?(i,j)K?(i)?(j)gcd?(i,j)?(gcd?(i,j))∑i=1n∑j=1ngcd?(i,j)K+1?(i)?(j)?(gcd?(i,j))∑d=1ndK+1inv(?(d))∑i=1nd∑j=1nd?(id)?(jd)[gcd?(i,j)=1]∑d=1ndK+1inv(phi(d))∑k=1nd?(k)∑i=1nkd?(ikd)∑j=1nkd?(jkd)T=kd,設(shè)f(T)=∑i=1nT?(it)∑T=1nf(T)2∑d∣TdK+1inv(?(d))μ(Td)設(shè)g(n)=∑i∣niK+1inv(?(i))μ(ni)∑i=1nf(i)2g(i)即為答案\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \phi(ij \gcd(i, j) ^ K)\\ \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \gcd(i, j) ^ K \phi(ij)\\ \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \gcd(i, j) ^ K \frac{\phi(i) \phi(j) \gcd(i, j)}{\phi(\gcd(i, j))}\\ \sum_{i = 1} ^{n} \sum_{j = 1} ^{n} \gcd(i, j) ^ {K + 1} \frac{\phi(i) \phi(j)}{ \phi(\gcd(i, j))}\\ \sum_{d = 1} ^{n} d ^{K + 1} inv(\phi(d)) \sum_{i = 1} ^{\frac{n}ozvdkddzhkzd} \sum_{j = 1} ^{\frac{n}ozvdkddzhkzd} \phi(id) \phi(jd)[\gcd(i, j) = 1]\\ \sum_{d = 1} ^{n} d ^{K + 1} inv(phi(d)) \sum_{k = 1} ^{\frac{n}ozvdkddzhkzd} \phi(k) \sum_{i = 1} ^{\frac{n}{kd}} \phi(ikd) \sum_{j = 1} ^{\frac{n}{kd}} \phi(jkd)\\ T = kd, 設(shè)f(T) = \sum_{i = 1} ^{\frac{n}{T}} \phi(it)\\ \sum_{T = 1} ^{n} f(T) ^ 2 \sum_{d \mid T} d ^{K + 1} inv(\phi(d)) \mu(\frac{T}ozvdkddzhkzd)\\ 設(shè)g(n) = \sum_{i \mid n} i ^{K + 1}inv (\phi(i)) \mu(\frac{n}{i})\\ \sum_{i = 1} ^{n} f(i) ^ 2 g(i)即為答案 i=1n?j=1n??(ijgcd(i,j)K)i=1n?j=1n?gcd(i,j)K?(ij)i=1n?j=1n?gcd(i,j)K?(gcd(i,j))?(i)?(j)gcd(i,j)?i=1n?j=1n?gcd(i,j)K+1?(gcd(i,j))?(i)?(j)?d=1n?dK+1inv(?(d))i=1dn??j=1dn???(id)?(jd)[gcd(i,j)=1]d=1n?dK+1inv(phi(d))k=1dn???(k)i=1kdn???(ikd)j=1kdn???(jkd)T=kd設(shè)f(T)=i=1Tn???(it)T=1n?f(T)2dT?dK+1inv(?(d))μ(dT?)設(shè)g(n)=in?iK+1inv(?(i))μ(in?)i=1n?f(i)2g(i)
所以預(yù)先處理iK+1i ^{K + 1}iK+1次冪,及inv(?(i))inv(\phi(i))inv(?(i)),即可(nlog?n)(n \log n)(nlogn)同時(shí)算得f(n)f(n)f(n),以及g(n)g(n)g(n),整體復(fù)雜度O(nlog?n)O(n \log n)O(nlogn),稍卡常,得寫(xiě) add sub 函數(shù)才能過(guò)。

#include <bits/stdc++.h>using namespace std;const int N = 5e6 + 10, mod = 998244353;int prime[N], inv[N], phi[N], mu[N], f[N], g[N], a[N], n, k, cnt;bool st[N];inline int add(int x, int y) {return x + y < mod ? x + y : x + y - mod; }inline void Add(int &x, int y) {x + y < mod ? x += y : x += y - mod; }inline int sub(int x, int y) {return x >= y ? x - y : x - y + mod; }inline void Sub(int &x, int y) {x >= y ? x -= y : x += mod - y; }int quick_pow(int a, int n) {int ans = 1;while (n) {if (n & 1) {ans = 1ll * ans * a % mod;}a = 1ll * a * a % mod;n >>= 1;}return ans; }void init() {phi[1] = mu[1] = a[1] = inv[1] = 1;for (int i = 2; i < N; i++) {inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;if (!st[i]) {prime[++cnt] = i;phi[i] = i - 1;mu[i] = -1;a[i] = quick_pow(i, k);}for (int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;a[i * prime[j]] = 1ll * a[i] * a[prime[j]] % mod;if (i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}phi[i * prime[j]] = phi[i] * (prime[j] - 1);mu[i * prime[j]] = -mu[i];}}for (int i = 1; i <= n; i++) {for (int j = i; j <= n; j += i) {Add(f[i], phi[j]);if (mu[j / i] == 1) {Add(g[j], 1ll * a[i] * inv[phi[i]] % mod);}else if (mu[j / i] == -1) {Sub(g[j], 1ll * a[i] * inv[phi[i]] % mod);}}} }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);scanf("%d %d", &n, &k);k++;init();int ans = 0;for (int i = 1; i <= n; i++) {Add(ans, 1ll * f[i] * f[i] % mod * g[i] % mod);}printf("%d\n", ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的小 Q 与函数求和 1(牛客练习赛 81 E)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。