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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

2019 Multi-University Training Contest 1 - 1011 - Function - 数论

發(fā)布時(shí)間:2024/4/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019 Multi-University Training Contest 1 - 1011 - Function - 数论 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://acm.hdu.edu.cn/showproblem.php?pid=6588

新學(xué)到了一個(gè)求n以內(nèi)與m的gcd的和的快速求法。也就是下面的S1。


①求:

$ \sum\limits_{i=1}^{n}gcd(m,i) $

②枚舉d:

$ \sum\limits_{d|m} d \sum\limits_{i=1}^{n} [gcd(m,i)==d] $

③顯然:

$ \sum\limits_{d|m} d \sum\limits_{i=1}^{\lfloor\frac{n}ozvdkddzhkzd\rfloor} [gcd(\frac{m}ozvdkddzhkzd,i)==1] $

到這一步已經(jīng)可以遞歸求了,琪琪說是 \(O(n^{\frac{3}{4}})\) ,不過題解可以繼續(xù)往下。

④為了方便直接考慮 $ \sum\limits_{i=1}^{n} [gcd(m,i)==1] $ ,反演(大概):

$ \sum\limits_{i=1}^{n} \sum\limits_{d|gcd(m,i)} \mu(d) $

⑤交換一下順序,枚舉d,很顯然n以內(nèi)的d的倍數(shù)都會(huì)貢獻(xiàn)一個(gè)mu(d):

$ \sum\limits_{d|m} \mu(d) \lfloor\frac{n}ozvdkddzhkzd\rfloor $


下面的是根據(jù)題解的實(shí)現(xiàn),不過是__int64的版本。

#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef __int64 lll;const int mod = 998244353; const int MAXN = 10000000;int phi[MAXN + 1]; int pri[MAXN + 1], pritop; bool notpri[MAXN + 1];void sieve() {int n = MAXN;pri[1] = phi[1] = 1;for(int i = 2; i <= n; i++) {if(!pri[i])pri[++pritop] = i, phi[i] = i - 1;for(int j = 1, tmp; j <= pritop && (tmp = i * pri[j]) <= n; j++) {pri[tmp] = 1;if(i % pri[j])phi[tmp] = phi[i] * phi[pri[j]];else {phi[tmp] = phi[i] * pri[j];break;}}} }ll S1(lll n, int m) {//sigma gcd(i,m) [1,n]ll res = 0;for(int T = 1; T * T <= m; ++T) {if(!(m % T)) {res += (n / T) * phi[T];if(T * T != m) {res += (n / (m / T)) * phi[(m / T)];}}}res %= mod;return res; }ll qpow(ll x, int n) {ll res = 1;while(n) {if(n & 1)res = res * x % mod;x = x * x % mod;n >>= 1;}return res; }const int inv2 = qpow(2ll, mod - 2); const int inv6 = qpow(6ll, mod - 2);ll sigma1(ll x) {return x * (x + 1ll) % mod * inv2 % mod; }ll sigma2(ll x) {return x * (x + 1ll) % mod * (2ll * x + 1ll) % mod * inv6 % mod; }ll S2_1(int r, int T) {int c = r / T;ll res = 0;res += 3ll * T * sigma2(c);res += 3ll * sigma1(c);res += c;res %= mod;return res; }ll S2(int r) {ll res = 0;for(int T = 1; T <= r; ++T) {res += 1ll * phi[T] * S2_1(r, T) % mod;}res %= mod;return res; }ll S0(lll n) {lll i, i3;for(i = 1;; ++i) {lll tmp = i * i * i;if(tmp > n) {--i;break;} elsei3 = tmp;}ll res = 0;res += S1(n, i) - S1(i3 - 1, i);res += S2(i - 1);res = (res % mod + mod) % mod;return res; }inline lll read() {lll x = 0;char c;do {c = getchar();} while(c < '0' || c > '9');do {x = (x << 3) + (x << 1) + c - '0';c = getchar();} while(c >= '0' && c <= '9');return x; }int main() { #ifdef Yinkufreopen("Yinku.in", "r", stdin); #endif // Yinkusieve();int T;cin >> T;lll n;while(T--) {n = read();cout << S0(n) << endl;} }

其實(shí)具體的思路還是要先分成兩部分來算,但是我當(dāng)時(shí)不會(huì)計(jì)算這個(gè)S1導(dǎo)致T了。其實(shí)計(jì)算S2的時(shí)候在整數(shù)較大的時(shí)候發(fā)生了溢出。也就是c*c的位置。所以說以后非數(shù)組的值一律開ll就對了。

#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef __int128 lll;const int mod = 998244353; const int MAXN = 10000000;int pk[MAXN + 1]; int sum1[MAXN + 1]; int phi[MAXN + 1]; int pri[MAXN + 1], pritop; bool notpri[MAXN + 1];void sieve() {int n = MAXN;pri[1] = pk[1] = sum1[1] = phi[1] = 1;for(int i = 2; i <= n; i++) {if(!pri[i])pri[++pritop] = i, phi[i] = i - 1, pk[i] = i, sum1[i] = 2 * i - 1;for(int j = 1, p, tmp; j <= pritop && (p = pri[j]) && (tmp = i * p) <= n; j++) {pri[tmp] = 1;if(i % p) {pk[tmp] = pk[p];sum1[tmp] = 1ll * sum1[i] * sum1[p] % mod;phi[tmp] = phi[i] * phi[p];} else {pk[tmp] = pk[i] * p;if(pk[tmp] == tmp) {sum1[tmp] = (1ll * sum1[i] * p % mod + (tmp - tmp / p)) % mod;} else {sum1[tmp] = 1ll * sum1[pk[tmp]] * sum1[tmp / pk[tmp]] % mod;}phi[tmp] = phi[i] * p;break;}}} }int sum2[MAXN + 1];ll qpow(ll x, int n) {ll res = 1;while(n) {if(n & 1)res = res * x % mod;x = x * x % mod;n >>= 1;}return res; }void init() {for(int c = 1, c1 = 2, c2 = 7, f1 = 1; c <= MAXN;) {sum2[c] = ((1ll * c2 - f1 + mod) % mod * sum1[c] % mod * qpow(c, mod - 2) % mod + c + sum2[c - 1]) % mod;++c, ++c1, f1 = c2 + 1;c2 = (1ll * c1 * c1 % mod * c1 % mod - 1 + mod) % mod;} }ll S1(lll n, int m) {//sigma gcd(i,m) [1,n]ll res = 0;for(int T = 1; T * T <= m; ++T) {if(!(m % T)) {res += (n / T) * phi[T];if(T * T != m) {res += (n / (m / T)) * phi[(m / T)];}}}res %= mod;return res; }ll S0(lll n) {lll i, i3;for(i = 1;; ++i) {lll tmp = i * i * i;if(tmp > n) {--i;break;} elsei3 = tmp;}ll res = 0;res += S1(n, i) - S1(i3 - 1, i);res += sum2[i - 1];res = (res % mod + mod) % mod;return res; }inline lll read() {lll x = 0;char c;do {c = getchar();} while(c < '0' || c > '9');do {x = (x << 3) + (x << 1) + c - '0';c = getchar();} while(c >= '0' && c <= '9');return x; }int main() { #ifdef Yinkufreopen("Yinku.in", "r", stdin); #endif // Yinkusieve();init();int T;cin >> T;lll n;while(T--) {n = read();cout << S0(n) << endl;} }

轉(zhuǎn)載于:https://www.cnblogs.com/Yinku/p/11229435.html

總結(jié)

以上是生活随笔為你收集整理的2019 Multi-University Training Contest 1 - 1011 - Function - 数论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 少妇厨房愉情理伦bd在线观看 | 国产又粗又猛又爽视频 | 国产精品日 | 无码国产色欲xxxxx视频 | 亚洲第一免费视频 | 狠狠干精品 | 国产无遮挡18禁无码网站不卡 | 欧美一级片一区二区 | 日韩国产欧美一区 | 国产精品高潮呻吟久久aⅴ码 | 骑骑上司妻电影 | 日韩中文字幕av | 亚洲成a人v欧美综合天堂麻豆 | 亚洲自拍另类 | 日本不卡在线视频 | jizz视频在线观看 | 国产91在线精品 | 女裸全身无奶罩内裤内衣内裤 | 日p免费视频| 色吧在线观看 | 毛片官网 | 成人免费毛片免费 | 羞羞色视频 | 国产女人18水真多18精品一级做 | 五月婷婷综合在线 | 色多多在线看 | 国产香蕉尹人视频在线 | 91免费国产视频 | 91在线观看免费 | 吊侵犯の奶水授乳羞羞漫画 | 日本视频网站在线观看 | 人妻夜夜爽天天爽三区麻豆av网站 | 黄色成人小视频 | 日日骚av一区二区 | 吊侵犯の奶水授乳羞羞漫画 | 久久成人在线视频 | 成人va视频 | 久久成人黄色 | 欲色影音 | 污污内射久久一区二区欧美日韩 | 999xxxxx| 色老板精品凹凸在线视频观看 | 国产av一区精品 | jzjzjzjzj亚洲成熟少妇 | 国产超碰91 | 久久久久久久久久久久久久免费看 | 黄色网址中文字幕 | 黄色中文字幕 | 亚欧美视频 | 中文人妻一区二区三区 | 国产午夜亚洲精品午夜鲁丝片 | 久久99中文字幕 | 国产欧美在线观看不卡 | 日韩五月天 | 爱爱免费小视频 | 欧色图| 久久国产免费视频 | 亚洲精品理论片 | 中国成人av| 国内精品久久久久久久久久久 | 亚洲三区在线观看无套内射 | 久久久久久久久久免费 | 草草视频在线观看 | 欧美粗暴se喷水 | 男人天堂a | 精品国产无码在线观看 | 色香蕉网| 欧美日韩一级二级三级 | 91蜜桃传媒精品久久久一区二区 | 爽爽爽av | 成人深夜福利视频 | 日本在线免费观看视频 | 韩日视频在线观看 | 国产97色 | www.国产视频| 91精品国产高清一区二区三区蜜臀 | 久久伊人99 | 成人免费视频久久 | 懂色av一区二区三区蜜臀 | 99国内揄拍国内精品人妻免费 | 成人无码久久久久毛片 | 亚洲大片| 亚洲成人乱码 | 男生插女生视频 | 久久综合影院 | 精品乱码一区二区三区四区 | 美女一级视频 | 亚洲自偷自偷偷色无码中文 | 前任攻略在线观看免费完整版 | 亚洲成色网 | 久久久久久草 | 免费观看一区二区三区视频 | 亚洲第一页视频 | 亚洲成a | 亚洲一区二区黄 | 激情 亚洲| 三大队在线观看 | 999精品 | 免费搞黄网站 |