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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数)

發布時間:2023/12/4 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1847 奇怪的數學題

推式子

∑i=1n∑j=1nsgcd(i,j)k∑d=1nsgcd(d)k∑i=1nd∑j=1nd[gcd(i,j)=1]∑d=1nsgcd(d)k(2∑i=1nd?(i)?1)\sum_{i = 1} ^{n} \sum_{j = 1} ^{n} sgcd(i, j) ^k\\ \sum_{d = 1} ^{n} sgcd(d) ^k \sum_{i = 1} ^{\frac{n}ozvdkddzhkzd} \sum_{j = 1} ^{\frac{n}ozvdkddzhkzd} [gcd(i, j) = 1]\\ \sum_{d = 1} ^{n} sgcd(d) ^k (2\sum_{i = 1} ^{\frac{n}ozvdkddzhkzd} \phi(i) - 1)\\ i=1n?j=1n?sgcd(i,j)kd=1n?sgcd(d)ki=1dn??j=1dn??[gcd(i,j)=1]d=1n?sgcd(d)k(2i=1dn???(i)?1)

接下來我們只要求得sgcd(d)ksgcd(d) ^ksgcd(d)k的前綴和就可以快樂地數論分塊了,

考慮到這個是求最小質因子,Min_25篩在篩g函數的時候有一步是枚舉最小質因子,

sgcd=sgcdmin(p)sgcd = \frac{sgcd}{min(p)}sgcd=min(p)sgcd?,對應的就是這一步,所以我們只要舍棄最小質因子,然后統計貢獻就行了,

當然最后我們要加上質數的貢獻,也就是質數的個數。

考慮到要求自然冪數前n項和,這題模數是個頭疼的地方,無法用拉格朗日插值,只能乖乖的寫第二類斯特林數了。

代碼

/*Author : lifehappy */ #pragma GCC optimize(2) #pragma GCC optimize(3) #include <bits/stdc++.h>#define mp make_pair #define pb push_back #define endl '\n' #define mid (l + r >> 1) #define lson rt << 1, l, mid #define rson rt << 1 | 1, mid + 1, r #define ls rt << 1 #define rs rt << 1 | 1using namespace std;typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> pii;const double pi = acos(-1.0); const double eps = 1e-7; const int inf = 0x3f3f3f3f;inline ll read() {ll f = 1, x = 0;char c = getchar();while(c < '0' || c > '9') {if(c == '-') f = -1;c = getchar();}while(c >= '0' && c <= '9') {x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return f * x; }#define uint unsigned intconst int N = 1e6 + 10;uint quick_pow(uint a, int n) {uint ans = 1;while(n) {if(n & 1) ans = ans * a;a = a * a;n >>= 1;}return ans; }namespace Sum {uint S[60][60], k;uint Sumk(int n) {uint ret = 0;for(int i = 1; i <= k; ++i) {uint s = 1;for(int j = 0; j <= i; ++j)if((n + 1 - j) % (i + 1)) s *= n + 1 - j;else s *= (n + 1 - j) / (i + 1);ret += S[k][i] *s;}return ret;}void init() {S[0][0] = 1;for(int i = 1; i <= k; i++)for(int j = 1; j <= i; j++)S[i][j] = S[i-1][j-1] + j * S[i-1][j];}}namespace Min_25 {uint prime[N], id1[N], id2[N], m, cnt, k, T;uint a[N], g1[N], sum1[N], g2[N], sum2[N], f[N], ans[N], n;bool st[N];int ID(ll x) {return x <= T ? id1[x] : id2[n / x];}void init() {T = sqrt(n + 0.5);for(int i = 2; i <= T; i++) {if(!st[i]) {prime[++cnt] = i;sum1[cnt] = sum1[cnt - 1] + 1;f[cnt] = quick_pow(i, k);sum2[cnt] = sum2[cnt - 1] + f[cnt];}for(int j = 1; j <= cnt && 1ll * i * prime[j] <= T; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) {break;}}}for(ll l = 1, r; l <= n; l = r + 1) {r = n / (n / l);a[++m] = n / l;if(a[m] <= T) id1[a[m]] = m;else id2[n / a[m]] = m;g1[m] = a[m] - 1;g2[m] = Sum::Sumk(a[m]) - 1;}for(int j = 1; j <= cnt; j++) {for(int i = 1; i <= m && 1ll * prime[j] * prime[j] <= a[i]; i++) {g1[i] -= (g1[ID(a[i] / prime[j])] - sum1[j - 1]);g2[i] -= f[j] * (g2[ID(a[i] / prime[j])] - sum2[j - 1]);ans[i] += g2[ID(a[i] / prime[j])] - sum2[j - 1];}}for(int i = 1; i <= m; i++) {ans[i] += g1[i];}}uint solve(int x) {if(x <= 1) return 0;return ans[ID(x)];} }namespace Djs {uint prime[N], phi[N], cnt;bool st[N];void init() {phi[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[++cnt] = i;phi[i] = i - 1;}for(int j = 1; j <= cnt && 1ll * i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}for(int i = 1; i < N; i++) {phi[i] += phi[i - 1];}}unordered_map<int, uint> ans_s;uint S(int n) {if(n < N) return phi[n];if(ans_s.count(n)) return ans_s[n];uint ans = 1ll * n * (n + 1) / 2;for(uint l = 2, r; l <= n; l = r + 1) {r = n / (n / l);ans -=(r - l + 1) * S(n / l);}return ans_s[n] = ans;} }int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int n = read(), k = read();Sum::k = k;Sum::init();Djs::init();Min_25::n = n, Min_25::k = k;Min_25::init();uint ans = 0;for(uint l = 1, r; l <= n; l = r + 1) {r = n / (n / l);ans += (Min_25::solve(r) - Min_25::solve(l - 1)) * (2 * Djs::S(n / l) - 1);}cout << ans << endl;return 0; }

總結

以上是生活随笔為你收集整理的1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美黑大粗 | 男女男精品视频 | 亚洲精品影视 | 欧美精品99久久久 | 成人a级片| 精品久久久久久久久久久久久久久久久久 | 久久久中文网 | 日本高清有码 | 一个色综合久久 | 性歌舞团一区二区三区视频 | 天天草夜夜 | 久久人人爽人人爽人人av | 91在线无精精品入口 | 在线一区二区视频 | 成人欧美精品一区二区 | 蜜臀av一区二区三区激情综合 | 波多野结衣三区 | 97超碰在 | 欧美国产一区二区三区 | 91亚色视频| 无码人妻少妇色欲av一区二区 | 欧美日韩中日 | 精品一区二区三区蜜臀 | 国产免费看av| 色网站在线免费观看 | 久久久久久国产精品三区 | 日本免费一区二区在线 | a男人天堂| 黑料视频在线 | 国内精品久久久久久久久久 | 欧美日韩1 | 亚洲第一成年网 | 日韩av无码久久 | 久久久777| 韩国bj大尺度vip福利网站 | 亚洲人免费 | 色多多黄色 | 人人妻人人爽欧美成人一区 | 色妞欧美 | 污片网址 | 国产一二三 | 我要看免费的毛片 | 成年人爱爱视频 | 欧美精品自拍 | 一区黄色 | 国产精品视频在线看 | 双性皇帝高h喷汁呻吟 | 大胸奶汁乳流奶水出来h | 被扒开腿一边憋尿一边惩罚 | 一级免费毛片 | 久久久国产精品一区 | 国产二级视频 | 欧美精品一区二区性色a+v | 日韩av大全| 91免费看片 | 欧美三级在线观看视频 | 日本高清www免费视频 | 欧美xxxxx自由摘花 | 色播一区二区 | 中国av一区 | 色站在线| 中文人妻熟妇乱又伦精品 | 黄色一集片 | 天天干天天操天天爽 | 欧美黑人欧美精品刺激 | 亚洲av无一区二区三区 | 国产激情二区 | 日韩一区二区三区免费 | 国产日韩av在线播放 | 啪啪一级片 | 毛片的网址 | 日本草草影院 | 中文一二三区 | 欧美天堂在线视频 | 永久视频在线观看 | 性视频久久| 国产femdom调教7777 | 中文字幕日韩一区二区 | 婷婷精品在线 | 国产超碰在线 | 日本免费一区二区视频 | 欧美激情在线观看视频 | 一本一道久久综合狠狠老精东影业 | 欧美三日本三级少妇99 | 高清久久 | youjizz亚洲女人 | 色在线综合 | 美女视频黄色 | 日韩av一区在线播放 | 久久久人 | 欧美日韩大陆 | 九热精品 | 国产三级一区二区 | 亚洲精品日韩综合观看成人91 | 在线观看日本一区二区 | 在线播放一级片 | 欧美一级视频免费 | 国产精品久久久无码一区 | 久久女人网 |