传送门


problem

给定 nnn 和 ppp,求:

∑i=1n∑j=1nijgcd⁡(i,j)\sum_{i=1}^n\sum_{j=1}^nij\gcd(i,j)i=1∑n​j=1∑n​ijgcd(i,j)

答案对 ppp 取模。

数据范围:n≤1010n\le10^{10}n≤1010,5×108≤p≤1.1×1095 \times 10^8 \leq p \leq 1.1 \times 10^95×108≤p≤1.1×109。


solution

枚举 gcd⁡\gcdgcd:

ans=∑k=1nk∑i=1⌊nk⌋∑j=1⌊nk⌋(ik)(jk)[gcd⁡(i,j)=1]=∑k=1nk3∑i=1⌊nk⌋∑j=1⌊nk⌋ij[gcd⁡(i,j)=1]\begin{aligned} ans&=\sum_{k=1}^nk\sum_{i=1}^{\lfloor\frac n k\rfloor}\sum_{j=1}^{\lfloor\frac n k\rfloor}(ik)(jk)[\gcd(i,j)=1]\\ &=\sum_{k=1}^nk^3\sum_{i=1}^{\lfloor\frac n k\rfloor}\sum_{j=1}^{\lfloor\frac n k\rfloor}ij[\gcd(i,j)=1] \end{aligned}ans​=k=1∑n​ki=1∑⌊kn​⌋​j=1∑⌊kn​⌋​(ik)(jk)[gcd(i,j)=1]=k=1∑n​k3i=1∑⌊kn​⌋​j=1∑⌊kn​⌋​ij[gcd(i,j)=1]​

这里其实可以直接反演了,但我们有一种更巧妙的做法。

把后面那一坨直接拿出来,即:

∑i=1⌊nk⌋∑j=1⌊nk⌋ij[gcd⁡(i,j)=1]\sum_{i=1}^{\lfloor\frac n k\rfloor}\sum_{j=1}^{\lfloor\frac n k\rfloor}ij[\gcd(i,j)=1]i=1∑⌊kn​⌋​j=1∑⌊kn​⌋​ij[gcd(i,j)=1]

把它记为 resresres 吧,那么:

res=2∑i=1⌊nk⌋∑j=1iij[gcd⁡(i,j)=1]−∑i=1⌊nk⌋i2[gcd⁡(i,i)=1]=2∑i=1⌊nk⌋i(∑j=1ij[gcd⁡(i,j)=1])−1\begin{aligned} res&=2\sum_{i=1}^{\lfloor\frac n k\rfloor}\sum_{j=1}^iij[\gcd(i,j)=1]-\sum_{i=1}^{\lfloor\frac n k\rfloor}i^2[\gcd(i,i)=1]\\ &=2\sum_{i=1}^{\lfloor\frac n k\rfloor}i\left(\sum_{j=1}^ij[\gcd(i,j)=1]\right)-1 \end{aligned}res​=2i=1∑⌊kn​⌋​j=1∑i​ij[gcd(i,j)=1]−i=1∑⌊kn​⌋​i2[gcd(i,i)=1]=2i=1∑⌊kn​⌋​i(j=1∑i​j[gcd(i,j)=1])−1​

由于 ∑i=1ni[gcd⁡(i,n)=1]=nφ(n)+[n=1]2\sum_{i=1}^ni[\gcd(i,n)=1]=\frac{n\varphi(n)+[n=1]}2∑i=1n​i[gcd(i,n)=1]=2nφ(n)+[n=1]​,证明可以看这里,那么有:

res=2∑i=1⌊nk⌋iiφ(i)+[i=1]2−1=∑i=1⌊nk⌋i2φ(i)\begin{aligned} res&=2\sum_{i=1}^{\lfloor\frac n k\rfloor}i\frac{i\varphi(i)+[i=1]}2-1\\ &=\sum_{i=1}^{\lfloor\frac n k\rfloor}i^2\varphi(i) \end{aligned}res​=2i=1∑⌊kn​⌋​i2iφ(i)+[i=1]​−1=i=1∑⌊kn​⌋​i2φ(i)​

那么回到我们原来的式子:

ans=∑k=1nk3∑i=1⌊nk⌋i2φ(i)ans=\sum_{k=1}^nk^3\sum_{i=1}^{\lfloor\frac n k\rfloor}i^2\varphi(i)ans=k=1∑n​k3i=1∑⌊kn​⌋​i2φ(i)

其实这剩下的部分就和这道题的末尾部分很像了,我就不写了。


code

#include<bits/stdc++.h>
#define N 5000005
#define ll long long
using namespace std;
ll n,P,inv2,inv4,inv6,f[N];
int sum,prime[N],mark[N],phi[N];
ll power(ll a,ll b,ll ans=1){for(;b;b>>=1,a=a*a%P)if(b&1)  ans=ans*a%P;return ans;
}
void linear_sieves(){f[1]=1;for(int i=2;i<N;++i){if(!mark[i])  prime[++sum]=i,phi[i]=i-1;for(int j=1;j<=sum&&i*prime[j]<N;++j){mark[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);}f[i]=(ll)i*i%P*phi[i]%P,f[i]=(f[i]+f[i-1])%P;}inv2=power(2,P-2),inv4=power(4,P-2),inv6=power(6,P-2);
}
ll Squ(ll x)  {return x%P*x%P;}
ll sum2(ll n)  {return n%P*((n+1)%P)%P*((2*n%P+1)%P)%P*inv6%P;}
ll sum3(ll n)  {return Squ(n%P)*Squ((n+1)%P)%P*inv4%P;}
unordered_map<ll,ll>Sum;
ll F(ll n){if(n<N)  return f[n];if(Sum[n])  return Sum[n];ll ans=sum3(n);for(ll i=2,j;i<=n;i=j+1){j=n/(n/i);ans=(ans-((sum2(j)-sum2(i-1)+P)%P*F(n/i)%P)+P)%P;}return Sum[n]=ans;
}
int main(){int ans=0;scanf("%lld%lld",&P,&n),linear_sieves();for(ll i=1,j;i<=n;i=j+1){j=n/(n/i);ans=(ans+(sum3(j)%P-sum3(i-1)%P+P)%P*F(n/i)%P)%P;}printf("%d",ans);return 0;
}

「洛谷 3768」简单的数学题相关推荐

  1. 【洛谷3768】简单的数学题【莫比乌斯反演】【杜教筛】【小学奥数】

    传送门 题意:给定p,Np,Np,N,求 ∑i=1N∑j=1Nijgcd(i,j)modp\sum_{i=1}^{N}\sum_{j=1}^{N}ijgcd(i,j)\text{ }mod \text ...

  2. 「洛谷2495」「BZOJ3052」「SDOI2001」消耗战【虚树+树形动态规划】

    题目大意 给你\(k\)个点,让这一些点和一号节点断开,删去某一些边,求最小的删去边权之和. 做题的心路历程 做了\(HG\)昨天的模拟赛,深深感觉到了窝的菜,所以为了\(A\)掉T1这一道毒瘤,窝就 ...

  3. 「洛谷P2397」 yyy loves Maths VI (mode) 解题报告

    P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居 ...

  4. 「洛谷P3469」[POI2008]BLO-Blockade 解题报告

    P3469[POI2008]LO-Blockade 题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个 ...

  5. 「洛谷P1343」地震逃生 解题报告

    P1343 地震逃生 题目描述 汶川地震发生时,四川XX中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边.1号点为教室,n号点为安全地带, ...

  6. 「洛谷 P5043」:树同构【树哈希】

    P5043 [模板]树同构([BJOI2015]树的同构 题目描述 树是一种很常见的数据结构. 我们把NNN个点,N−1N−1N−1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点 ...

  7. 「LuoguP4995」「洛谷11月月赛」 跳跳!(贪心

    题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi​,地面的高度是 h_0 = 0 ...

  8. 「洛谷」P1406 方格填数

    P1406 方格填数 https://www.luogu.com.cn/problem/P1406 题目描述 给一个n 的方格矩阵,还有 n*n个整数,让你将这些整数填入矩阵,使得每行每列每个对角线上 ...

  9. 洛谷-小书童——密码-简单字符串

    题目背景 Background 某蒟蒻迷上了"小书童",有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你.  题目描述 Description 蒟蒻虽然忘记 ...

最新文章

  1. Python实现不规则txt文本数据读取并转换为csv文本
  2. php免登录接口,PHPWind 8.0 论坛免登陆发布接口发布
  3. 计算机网络实验中S1是啥意思,某计算机A需要访问域名www.yy.com,它首先向本域DNS服务器S1查询,.._简答题试题答案...
  4. 飞飞CMS黑色自适应BX8X主题模板
  5. 关于“100g文件全是数组,取最大的100个数”解决方法汇总
  6. 简易php access文章管理系统,PHP+ACCESS 文章管理程序代码
  7. UVA489 Hangman Judge【模拟】
  8. 平衡二叉树删除_自平衡二叉树实现及时间复杂度分析
  9. Google浏览器划词翻译
  10. 通识与专业结合的大学之路
  11. 职称计算机考试题库破解版2017,2017职称计算机考试题库及答案
  12. edge浏览器安装扩展插件报错:出现错误Download interrupted
  13. 常用App URL Scheme
  14. Prometheus+Grafana环境搭建(windows版)
  15. 工程师软技能~聊聊价值,价值观和价值积累
  16. 有关前端性能优化—DNS解析优化的方法?
  17. USDCNY即期均值顺势信号——基于Python的均值回归进阶策略
  18. ACM学习:例题完成总结与期中心得
  19. 使用python为Excel插入附件
  20. 陆军步兵学院文职面试计算机,2018军队文职文职面试试题回忆版(2018年第二号)...

热门文章

  1. pc模式 华为mate30_华为Mate30系列发布会上的这10个细节,藏着真正的黑科技
  2. 太原java培训机构排名,吊打面试官系列!
  3. python3爬取音乐(python经典编程案例)
  4. 计算机专业选修课怎么选比较好,大一选修课选什么好 大学选修课推荐
  5. 将光耦合进入单模光纤的最佳工作距离
  6. 川希:如何打造个人IP让别人信任,主动追着我们付钱!
  7. 巴拉圭即将建成首个模块化数据中心
  8. Windows命令行查看文本文件
  9. 三星android怎么获取root,三星GT-i9128完美获取root权限教程最新版
  10. Android游戏: 五子棋-局域网版