51nod1237 最大公约数之和 V3
题意:求

解:

最后一步转化是因为phi * I = Id,故Id * miu = phi
第二步是反演,中间省略了几步...
然后就这样A了......最终式子是个整除分块,后面用杜教筛求一下phi前缀和即可。
#include <cstdio>
#include <map> typedef long long LL;
const int N = , T = ;
const LL MO = ; int p[N], top, phi[N];
LL Phi[N], inv2;
bool vis[N];
std::map<LL, LL> mp; inline void getp(int n) {
phi[] = ;
for(int i = ; i <= n; i++) {
if(!vis[i]) {
p[++top] = i;
phi[i] = i - ;
}
for(int j = ; j <= top && i * p[j] <= n; j++) {
vis[i * p[j]] = ;
if(i % p[j] == ) {
phi[i * p[j]] = phi[i] * p[j];
break;
}
phi[i * p[j]] = phi[i] * (p[j] - );
}
}
for(int i = ; i <= n; i++) {
Phi[i] = (Phi[i - ] + phi[i]) % MO;
}
return;
} LL getPhi(LL x) {
if(x <= ) return ;
if(x <= T) return Phi[x];
if(mp.count(x)) return mp[x];
LL ans = (x + ) % MO * (x % MO) % MO * inv2 % MO;
for(LL i = , j; i <= x; i = j + ) {
j = x / (x / i);
ans -= (j - i + ) % MO * getPhi(x / i) % MO;
ans %= MO;
}
return mp[x] = (ans + MO) % MO;
} int main() {
LL n;
getp(T);
inv2 = (MO + ) / ;
scanf("%lld", &n);
LL ans = ;
for(LL i = , j; i <= n; i = j + ) {
j = n / (n / i);
LL temp = (n / i) % MO;
ans += temp * temp % MO * (getPhi(j) - getPhi(i - ) + MO) % MO;
ans %= MO;
}
printf("%lld\n", (ans + MO) % MO);
return ;
}
AC代码
51nod1237 最大公约数之和 V3的更多相关文章
- [51nod1237] 最大公约数之和 V3(杜教筛)
题面 传送门 题解 我好像做过这题-- \[ \begin{align} ans &=\sum_{i=1}^n\sum_{j=1}^n\gcd(i,j)\\ &=\sum_{d=1}^ ...
- [51nod1237]最大公约数之和V3
$\sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j)\\$ $=\sum_{d=1}^{n}d\sum_{i=1}^{n/d}\sum_{j=1}^{n/d}\varepsilo ...
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- 51nod 1237 最大公约数之和 V3(杜教筛)
[题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 [题目大意] 求[1,n][1,n]最大公约数之和 ...
- 51nod 1237 最大公约数之和 V3
求∑1<=i<=n∑1<=j<=ngcd(i,j) % P P = 10^9 + 7 2 <= n <= 10^10 这道题,明显就是杜教筛 推一下公式: 利用∑d ...
- 51nod1237 最大公约数之和
题目链接 题意 其实就是求 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)\] 思路 建议先看一下此题的一个弱化版 推一下式子 \[\sum\limi ...
- 51Nod.1237.最大公约数之和 V3(莫比乌斯反演 杜教筛 欧拉函数)
题目链接 \(Description\) \(n\leq 10^{10}\),求 \[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j)\ mod\ (1e9+7)\] \(Soluti ...
- 【题解】最大公约数之和 V3 51nod 1237 杜教筛
题目传送门 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1237 数学题真是做的又爽又痛苦,爽在于只要推出来公式基本上就 ...
- 51nod 1237 最大公约数之和 V3【欧拉函数||莫比乌斯反演+杜教筛】
用mu写lcm那道卡常卡成狗(然而最后也没卡过去,于是写一下gcd冷静一下 首先推一下式子 \[ \sum_{i=1}^{n}\sum_{j=1}^{n}gcd(i,j) \] \[ \sum_{i= ...
随机推荐
- 【教你玩转云计算】在阿里云一键安装快速部署Oracle11g
云计算时代提供了更方便可靠的IAAS,PAAS和SAAS平台.将已有或正在研发的项目迁移到云计算平台,和传统的服务器部署还是存在一些异同点. 本文手把手教你在阿里云平台快速的部署Oracle11g ...
- 磁盘挂载问题:Fdisk最大只能创建2T分区的盘,超过2T使用parted
需求说明:云服务器上买了一块8T的磁盘,准备挂载到服务器上的/data目录下. ===================================parted命令说明=============== ...
- Netdata---Linux系统性能实时监控平台部署记录
通常来说,作为一个Linux的SA,很有必要掌握一个专门的系统监控工具,以便能随时了解系统资源的占用情况.下面就介绍下一款Linux性能实时监测工具-Netdata,它是Linux系统实时性能监测工具 ...
- 几何学观止(Riemann流形部分)
上承这个页面,相较之前,增加了古典的曲线曲面论,这部分介绍得很扼要,Riemann流形介绍得也很快,花了仅仅30页就介绍到了Gauss-Bonnet公式.同时配上了提示完整的习题. 几何学观止-Rie ...
- 团队作业:SRS文档-飞机大战
本实验为团队合作项目作业的一部分:SRS文档-飞机大战 项目分工:SRS文档项目为梁JM负责完成 实验要求: 3.SRS文档(第二周,截止5月31日) 要求对所选项目进行用例 ...
- 第三个spring冲刺第2天
今天我们有了计时功能的实现,并且在考虑如何使得计时器美观好看达到我们的要求,对此我们换了不同的背景,时钟框,效果还有待查看.
- Mysql 5.7.21 单机多实例安装
下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...
- js核心对象
- ASP.NET MVC4学习笔记
一.MVC简介
- [转帖]台积电近10万片晶圆报废,但7nm工艺将成2019营收主力
台积电近10万片晶圆报废,但7nm工艺将成2019营收主力 2019年02月18日 13:19 1784 次阅读 稿源:Expreview超能网 0 条评论 https://www.cnbeta.co ...