2020杭电多校第六场 A Very Easy Math Problem 莫比乌斯反演 (HDU 6833)
A Very Easy Math Problem
题解
∑ a 1 = 1 n ∑ a 2 = 1 n ⋅ ⋅ ⋅ ∑ a x = 1 n ( ∏ j = 1 x a j k ) f ( g c d ( a 1 , a 2 , . . . , a n ) ) g c d ( a 1 , a 2 , . . . , a n ) = ∑ d = 1 n d f ( d ) ∑ a 1 = 1 n ∑ a 2 = 1 n ⋅ ⋅ ⋅ ∑ a x = 1 n ( ∏ j = 1 x a j k ) [ g c d ( a 1 , a 2 , . . . , a n ) = d ] = ∑ d = 1 n d k x + 1 f ( d ) ∑ a 1 = 1 ⌊ n / d ⌋ ∑ a 2 = 1 ⌊ n / d ⌋ ⋅ ⋅ ⋅ ∑ a x = 1 ⌊ n / d ⌋ ( ∏ j = 1 x a j k ) ∑ t ∣ a 1 , t ∣ a 2 , . . . , t ∣ a n μ ( t ) = ∑ d = 1 n d k x + 1 f ( d ) ∑ a 1 = 1 ⌊ n / d ⌋ a 1 k ∑ a 2 = 1 ⌊ n / d ⌋ a 2 k ⋅ ⋅ ⋅ ∑ a x = 1 ⌊ n / d ⌋ a x k ∑ t ∣ a 1 , t ∣ a 2 , . . . , t ∣ a n μ ( t ) = ∑ d = 1 n d k x + 1 f ( d ) ( ∑ i = 1 ⌊ n / d ⌋ i k ) x ∑ t ∣ a 1 , t ∣ a 2 , . . . , t ∣ a n μ ( t ) = ∑ d = 1 n d k x + 1 f ( d ) ∑ t = 1 ⌊ n / d ⌋ μ ( t ) ( ∑ i = 1 ⌊ n / d t ⌋ ( i t ) k ) x = ∑ d = 1 n d k x + 1 f ( d ) ∑ t = 1 ⌊ n / d ⌋ μ ( t ) t k x ( ∑ i = 1 ⌊ n / d t ⌋ i k ) x T = d t → = ∑ T = 1 n ( ∑ i = 1 ⌊ n / T ⌋ i k ) x T k x ∑ d ∣ T f ( d ) μ ( T d ) d 令 g ( T ) = ∑ d ∣ T f ( d ) μ ( T d ) d → = ∑ T = 1 n ( ∑ i = 1 ⌊ n / T ⌋ i k ) x T k x g ( T ) \begin{aligned} & \displaystyle\sum_{a_1=1}^{n} \displaystyle\sum_{a_2=1}^{n}···\displaystyle\sum_{a_x=1}^{n} \left(\prod_{j = 1} ^ {x} a_j ^ k \right) f \left( gcd(a_1, a_2, ...,a_n) \right) gcd(a_1, a_2, ...,a_n) \\ & =\displaystyle\sum_{d = 1} ^ {n} d f(d) \displaystyle\sum_{a_1=1}^{n} \displaystyle\sum_{a_2=1}^{n}···\displaystyle\sum_{a_x=1}^{n} \left(\prod_{j = 1} ^ {x} a_j ^ k \right) \left[gcd(a_1, a_2, ...,a_n) = d \right] \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ {kx+1} f(d) \displaystyle\sum_{a_1=1}^{\lfloor n/d \rfloor} \displaystyle\sum_{a_2=1}^{\lfloor n/d \rfloor}···\displaystyle\sum_{a_x=1}^{\lfloor n/d \rfloor} \left(\prod_{j = 1} ^ {x} a_j ^ k \right) \displaystyle\sum_{t|a_1,t|a_2,...,t|a_n} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ {kx+1} f(d) \displaystyle\sum_{a_1=1}^{\lfloor n/d \rfloor} a_1^k \displaystyle\sum_{a_2=1}^{\lfloor n/d \rfloor} a_2^k ···\displaystyle\sum_{a_x=1}^{\lfloor n/d \rfloor} a_x^k \displaystyle\sum_{t|a_1,t|a_2,...,t|a_n} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ {kx+1} f(d) \left( \displaystyle\sum_{i=1}^{\lfloor n/d \rfloor} i^k \right) ^ x \displaystyle\sum_{t|a_1,t|a_2,...,t|a_n} \mu(t) \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ {kx+1} f(d) \displaystyle\sum_{t = 1} ^ {\lfloor n/d \rfloor} \mu(t) \left( \displaystyle\sum_{i=1}^{\lfloor n/dt \rfloor} (it)^k \right) ^ x \\ & = \displaystyle\sum_{d = 1} ^ {n} d ^ {kx+1} f(d) \displaystyle\sum_{t = 1} ^ {\lfloor n/d \rfloor} \mu(t)t^{kx} \left( \displaystyle\sum_{i=1}^{\lfloor n/dt \rfloor} i^k \right) ^ x \\ T = dt \to & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i=1}^{\lfloor n/T \rfloor} i^k \right) ^ x T ^ {kx}\displaystyle\sum_{d|T} f(d) \mu(\frac{T}{d})d \\ 令g(T) = \displaystyle\sum_{d|T} f(d) \mu(\frac{T}{d})d \to & = \displaystyle\sum_{T = 1} ^ {n} \left( \displaystyle\sum_{i=1}^{\lfloor n/T \rfloor} i^k \right) ^ x T ^ {kx}g(T) \end{aligned} T=dt→令g(T)=d∣T∑f(d)μ(dT)d→a1=1∑na2=1∑n⋅⋅⋅ax=1∑n(j=1∏xajk)f(gcd(a1,a2,...,an))gcd(a1,a2,...,an)=d=1∑ndf(d)a1=1∑na2=1∑n⋅⋅⋅ax=1∑n(j=1∏xajk)[gcd(a1,a2,...,an)=d]=d=1∑ndkx+1f(d)a1=1∑⌊n/d⌋a2=1∑⌊n/d⌋⋅⋅⋅ax=1∑⌊n/d⌋(j=1∏xajk)t∣a1,t∣a2,...,t∣an∑μ(t)=d=1∑ndkx+1f(d)a1=1∑⌊n/d⌋a1ka2=1∑⌊n/d⌋a2k⋅⋅⋅ax=1∑⌊n/d⌋axkt∣a1,t∣a2,...,t∣an∑μ(t)=d=1∑ndkx+1f(d)⎝⎛i=1∑⌊n/d⌋ik⎠⎞xt∣a1,t∣a2,...,t∣an∑μ(t)=d=1∑ndkx+1f(d)t=1∑⌊n/d⌋μ(t)⎝⎛i=1∑⌊n/dt⌋(it)k⎠⎞x=d=1∑ndkx+1f(d)t=1∑⌊n/d⌋μ(t)tkx⎝⎛i=1∑⌊n/dt⌋ik⎠⎞x=T=1∑n⎝⎛i=1∑⌊n/T⌋ik⎠⎞xTkxd∣T∑f(d)μ(dT)d=T=1∑n⎝⎛i=1∑⌊n/T⌋ik⎠⎞xTkxg(T)
这里 f f f函数可以 O ( n l o g n ) O(nlog n) O(nlogn)筛,筛完后 O ( n l o g n ) O(nlog n) O(nlogn)筛 g g g函数,再对 g g g函数做一个前缀和
∑ i = 1 ⌊ n / T ⌋ i k \displaystyle\sum_{i=1}^{\lfloor n/T \rfloor} i^k i=1∑⌊n/T⌋ik可以预处理前缀和
最后计算的时候分块计算,总体复杂度 O ( n l o g n + T n ) O(nlogn+T\sqrt n) O(nlogn+Tn ),T为询问次数
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
const ll mod = 1e9 + 7;ll qpow(ll a, ll b) {ll res = 1;while (b) {if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}ll T, k, x, n;
int vis[N], prime[N], num, mu[N];
ll g[N], f[N], sumG[N], sum[N];
void init(int siz) {f[1] = mu[1] = 1, num = 0;for (int i = 2; i <= siz; i++) {f[i] = 1;if (!vis[i]) prime[++num] = i, mu[i] = -1;for (int j = 1; j <= num && i * prime[j] <= siz; j++) {vis[i * prime[j]] = 1;if (i % prime[j] == 0) {mu[i * prime[j]] = 0;break;}else mu[i * prime[j]] = mu[i] * mu[prime[j]];}}for (int d = 2; d * d <= siz; d++) for (int i = d * d; i <= siz; i += d * d) f[i] = 0;//f函数for (int d = 1; d <= siz; d++)for (int i = d; i <= siz; i += d)g[i] = (g[i] + 1ll * d * f[d] % mod * mu[i / d] % mod + mod) % mod;//g函数for (int i = 1; i <= siz; i++) {ll t = qpow(i, k);sum[i] = (sum[i - 1] + t) % mod;//i^k前缀和sumG[i] = (sumG[i - 1] + qpow(t, x) * g[i] % mod) % mod;//g函数前缀和}
}int main() {scanf("%lld%lld%lld", &T, &k, &x);init(2e5);while (T--) {scanf("%lld", &n);ll ans = 0;for (int l = 1, r; l <= n; l = r + 1) {r = n / (n / l);ans = (ans + 1ll * (sumG[r] - sumG[l - 1] + mod) % mod * qpow(sum[n / l], x) % mod) % mod;}printf("%lld\n", (ans + mod) % mod);}return 0;
}
2020杭电多校第六场 A Very Easy Math Problem 莫比乌斯反演 (HDU 6833)相关推荐
- 杭电多校第六场个人补题6 7 9 10 12
杭电多校第六场个人补题6 7 9 10 12 6 题意 给定一棵有n结点的树,点权为1~n,求对所有结点子树的mex操作和的最大值 思路 其实就是从最底部开始网上找,由于0是唯一的一个,所欲最好给在最 ...
- 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]
题目链接 题目大意: 给定nnn个节点的树,问删除尽可能小的点使得树的直径不超过KKK,输出最小删除的点数,(1<=k<=n<=3e5)(1<=k<=n<=3e5) ...
- 杭电多校第六场-J-Ridiculous Netizens
Problem Description Mr. Bread has a tree T with n vertices, labeled by 1,2,-,n. Each vertex of the t ...
- 2019 杭电多校第六场 题解
比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...
- 2017 杭电多校联赛第二场 1003 Maximum Sequence(单调队列)HDU 6047
Maximum Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- 2022杭电多校第八场题解
2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...
- 杭电多校第七场 1011 Kejin Player HDU(6656)
杭电多校第七场 1011 Kejin Player 题意:给你N行,代表从i级有花费a[i]元的r[i]/s[i]的概率达到i+1级,剩下的概率中可能会到达x[i]级.然后询问从L级到R级的花费会是多 ...
- 2019杭电多校 第七场 Kejin Player 6656(求期望值)
2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...
- 2019杭电多校第9场1002 Rikka with Cake HDU6681
2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...
最新文章
- 结构光测距相位差_ROHM确立新型VCSEL模块技术 有助于提高测距精度
- 基于Erlang语言的视频相似推荐系统 | 深度
- Spring 中的bean 是线程安全的吗?
- php井字游戏,python实现井字棋游戏
- go语言笔记——包的概念本质上和java是一样的,通过大小写来区分private,fmt的Printf不就是嘛!...
- 修改ActiveProcessLinks链表隐藏进程
- Maven+Tomcat的热部署方案
- java黄金分割点游戏_结对编程1——黄金点小游戏项目简介及需求分析
- 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
- 201671010119 2016-2017-2《Java程序设计》第十四周学习心得
- Mac OS X上安装配置apache服务器
- java字符类型的返回值,Java字符类isWhitespace()方法及示例
- web服务器IIS详细错误代码以及解释
- Ubuntu免密码输入关机脚本
- chronyd同步windows时钟源问题
- ORA-20011KUP-11024ORA-29913
- Word文档怎么添加删除线
- UiPath 网页元素识别
- dlna移植android系统,android系统的dlna开发
- SQP 序列二次规划法
热门文章
- 你这辈子最引以为傲的是什么?
- 三级文明的代码_文明6秘籍代码有哪些 文明6秘籍代码大全
- V神设计理念公布,什么是以太坊的初心?
- 无法解析此远程名称: 'www.***.com' 解决办法
- 问题 B: 黑暗意志
- 周刊 | 回顾一周云行业热点快讯 (2019/08/05)
- 水冷计算机配置单,8500元i7-7700K配GTX1070超频水冷主机电脑配置清单推荐
- vue移动端从列表详情返回列表页之前的位置(包括分页情况)
- 后期调色效果Lr预设
- 一款让“微软爸爸杀不死”的数据库软件——生于1992的Access