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∑n​a2​=1∑n​⋅⋅⋅ax​=1∑n​(j=1∏x​ajk​)f(gcd(a1​,a2​,...,an​))gcd(a1​,a2​,...,an​)=d=1∑n​df(d)a1​=1∑n​a2​=1∑n​⋅⋅⋅ax​=1∑n​(j=1∏x​ajk​)[gcd(a1​,a2​,...,an​)=d]=d=1∑n​dkx+1f(d)a1​=1∑⌊n/d⌋​a2​=1∑⌊n/d⌋​⋅⋅⋅ax​=1∑⌊n/d⌋​(j=1∏x​ajk​)t∣a1​,t∣a2​,...,t∣an​∑​μ(t)=d=1∑n​dkx+1f(d)a1​=1∑⌊n/d⌋​a1k​a2​=1∑⌊n/d⌋​a2k​⋅⋅⋅ax​=1∑⌊n/d⌋​axk​t∣a1​,t∣a2​,...,t∣an​∑​μ(t)=d=1∑n​dkx+1f(d)⎝⎛​i=1∑⌊n/d⌋​ik⎠⎞​xt∣a1​,t∣a2​,...,t∣an​∑​μ(t)=d=1∑n​dkx+1f(d)t=1∑⌊n/d⌋​μ(t)⎝⎛​i=1∑⌊n/dt⌋​(it)k⎠⎞​x=d=1∑n​dkx+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)相关推荐

  1. 杭电多校第六场个人补题6 7 9 10 12

    杭电多校第六场个人补题6 7 9 10 12 6 题意 给定一棵有n结点的树,点权为1~n,求对所有结点子树的mex操作和的最大值 思路 其实就是从最底部开始网上找,由于0是唯一的一个,所欲最好给在最 ...

  2. 点分治问题 ----------- HDU6881 Tree Cutting or 2020杭电多校第10场 [点分治+思维]

    题目链接 题目大意: 给定nnn个节点的树,问删除尽可能小的点使得树的直径不超过KKK,输出最小删除的点数,(1<=k<=n<=3e5)(1<=k<=n<=3e5) ...

  3. 杭电多校第六场-J-Ridiculous Netizens

    Problem Description Mr. Bread has a tree T with n vertices, labeled by 1,2,-,n. Each vertex of the t ...

  4. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  5. 2017 杭电多校联赛第二场 1003 Maximum Sequence(单调队列)HDU 6047

    Maximum Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  6. 2022杭电多校第八场题解

    2022杭电多校第八场 Theramore(思维) 题意 给定一个01字符串,每次可以将一个奇数长度的区间翻转,求操作后字典序最小的字符串. 分析 翻转奇数长度的区间,元素位置的奇偶性不变,统计奇数位 ...

  7. 杭电多校第七场 1011 Kejin Player HDU(6656)

    杭电多校第七场 1011 Kejin Player 题意:给你N行,代表从i级有花费a[i]元的r[i]/s[i]的概率达到i+1级,剩下的概率中可能会到达x[i]级.然后询问从L级到R级的花费会是多 ...

  8. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  9. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

最新文章

  1. 结构光测距相位差_ROHM确立新型VCSEL模块技术 有助于提高测距精度
  2. 基于Erlang语言的视频相似推荐系统 | 深度
  3. Spring 中的bean 是线程安全的吗?
  4. php井字游戏,python实现井字棋游戏
  5. go语言笔记——包的概念本质上和java是一样的,通过大小写来区分private,fmt的Printf不就是嘛!...
  6. 修改ActiveProcessLinks链表隐藏进程
  7. Maven+Tomcat的热部署方案
  8. java黄金分割点游戏_结对编程1——黄金点小游戏项目简介及需求分析
  9. 信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653
  10. 201671010119 2016-2017-2《Java程序设计》第十四周学习心得
  11. Mac OS X上安装配置apache服务器
  12. java字符类型的返回值,Java字符类isWhitespace()方法及示例
  13. web服务器IIS详细错误代码以及解释
  14. Ubuntu免密码输入关机脚本
  15. chronyd同步windows时钟源问题
  16. ORA-20011KUP-11024ORA-29913
  17. Word文档怎么添加删除线
  18. UiPath 网页元素识别
  19. dlna移植android系统,android系统的dlna开发
  20. SQP 序列二次规划法

热门文章

  1. 你这辈子最引以为傲的是什么?
  2. 三级文明的代码_文明6秘籍代码有哪些 文明6秘籍代码大全
  3. V神设计理念公布,什么是以太坊的初心?
  4. 无法解析此远程名称: 'www.***.com' 解决办法
  5. 问题 B: 黑暗意志
  6. 周刊 | 回顾一周云行业热点快讯 (2019/08/05)
  7. 水冷计算机配置单,8500元i7-7700K配GTX1070超频水冷主机电脑配置清单推荐
  8. vue移动端从列表详情返回列表页之前的位置(包括分页情况)
  9. 后期调色效果Lr预设
  10. 一款让“微软爸爸杀不死”的数据库软件——生于1992的Access