GuGuFishtion

推式子

∑a=1m∑b=1nϕ(a,b)ϕ(a)ϕ(b)=∑a=1m∑b=1ngcd(a,b)ϕ(gcd(a,b))=∑d=1mdϕ(d)∑a=1md∑b=1mdgcd(a,b)==1=∑d=1mdϕ(d)∑a=1md∑b=1md∑k∣gcd(a,b)μ(k)我们约定n,m,满足n<m=∑d=1ndϕ(d)∑k=1ndμ(k)⌊nkd⌋⌊mkd⌋\sum_{a = 1 } ^{m} \sum_{b = 1 } ^{n} \frac{\phi(a, b)}{\phi(a) \phi(b)}\\ = \sum_{a = 1} ^{m} \sum_{b = 1} ^{n} \frac{gcd(a, b)}{\phi(gcd(a, b))}\\ = \sum_{d = 1} ^{m} \frac{d}{\phi(d)} \sum_{a = 1} ^{\frac{m}{d}} \sum_{b = 1} ^{\frac{m}{d}} gcd(a, b) == 1\\ = \sum_{d = 1} ^{m} \frac{d}{\phi(d)} \sum_{a = 1} ^{\frac{m}{d}} \sum_{b = 1} ^{\frac{m}{d}} \sum_{k \mid gcd(a, b)} \mu(k)\\ 我们约定n, m,满足 n < m\\ = \sum_{d = 1} ^{n} \frac{d}{\phi(d)} \sum_{k = 1} ^{\frac{n}{d}} \mu(k) \lfloor\frac{n}{kd}\rfloor \lfloor \frac{m}{kd} \rfloor\\ a=1∑m​b=1∑n​ϕ(a)ϕ(b)ϕ(a,b)​=a=1∑m​b=1∑n​ϕ(gcd(a,b))gcd(a,b)​=d=1∑m​ϕ(d)d​a=1∑dm​​b=1∑dm​​gcd(a,b)==1=d=1∑m​ϕ(d)d​a=1∑dm​​b=1∑dm​​k∣gcd(a,b)∑​μ(k)我们约定n,m,满足n<m=d=1∑n​ϕ(d)d​k=1∑dn​​μ(k)⌊kdn​⌋⌊kdm​⌋

接下来我们只要筛选出前1e61e61e6个数的ϕandμ\phi \ and\ \muϕ and μ,再通过两次数论分块即可整体复杂度是O(nn)=O(n)。O(\sqrt n\sqrt n )= O(n)。O(n​n​)=O(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;
}const int N = 1e6 + 10;int prime[N], cnt;int phi[N], mu[N], inv[N], sum[N], n, m, mod;bool st[N];void init() {phi[1] = mu[1] = 1;for(int i = 2; i < N; i++) {if(!st[i]) {prime[cnt++] = i;mu[i] = -1;phi[i] = i - 1;}for(int j = 0; j < cnt && i * prime[j] < N; j++) {st[i * prime[j]] = 1;if(i % prime[j] == 0) {phi[i * prime[j]] = phi[i] * prime[j];break;}mu[i * prime[j]] = -mu[i];phi[i * prime[j]] = phi[i] * (prime[j] - 1);}}for(int i = 1; i < N; i++) {mu[i] += mu[i - 1];}
}ll calc(ll n, ll m) {ll ans = 0;for(ll l = 1, r; l <= n; l = r + 1) {r = min(n / (n / l), m / (m / l));ans = (ans + (mu[r] - mu[l - 1]) * (n / l) % mod * (m / l) % mod) % mod;}return ans;
}int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);init();int T = read();while(T--) {n = read(), m = read(), mod = read();if(n > m) swap(n, m);inv[1] = 1;for(int i = 2; i < N; i++) {inv[i] = 1ll * (mod - mod / i) * inv[mod % i] % mod;}for(int i = 1; i < N; i++) {sum[i] = (sum[i - 1] + 1ll * i * inv[phi[i]] % mod) % mod;}ll ans = 0;for(int l = 1, r; l <= n; l = r + 1) {r = min(n / (n / l), m / (m / l));ll temp = calc(n / l, m / l);ans = (ans + (sum[r] - sum[l - 1] + mod) % mod * calc(n / l, m / l) % mod) % mod;}printf("%lld\n", ans);}return 0;
}

GuGuFishtion(2018 Multi-University Training Contest 7)相关推荐

  1. MF_RC522_射频识别参考程序注释(2018年4月27号)

    MF_RC522_射频识别参考程序注释(2018年4月27号) https://wenku.baidu.com/view/478e6bb17f1922791688e8f8.html

  2. 2018-12 jdk_JDK 12新闻(2018年9月13日)

    2018-12 jdk 由于计划于本月晚些时候(2018年9月25日)发布JDK 11的 一般可用性 ,是时候开始更仔细地研究JDK 12了 . 在OpenJDK jdk-dev邮件列表上的标题为&q ...

  3. 数据分享|MuSyQ高分16米/10天叶面积指数产品(2018–2020年中国01版)

    摘要 叶面积指数(leaf area index,LAI)是研究植被生态系统结构和功能的核心参数之一,遥感是获取大范围动态LAI的一个主要技术手段.但目前国际上没有高分辨率的LAI标准化产品,本文利用 ...

  4. 微博签到打卡poi数据(2018年1月-2022年)

    微博签到数据(2018年1月-2022年) 微博签到打卡poi数据 包括地理位置经纬度.签到地点.微博链接.博主主页链接.正文内容.图片视频链接(均可高清下载).发表时间.转发数.评论数.点赞数等字段 ...

  5. JDK 12新闻(2018年9月13日)

    随着通用性的JDK 11计划在本月底(2018 9月25日),这是一个好时机,开始在更紧密地看着JDK 12 . 在OpenJDK jdk-dev邮件列表上的标题为" JDK 12的计划时间 ...

  6. 我爱计算机视觉精华文章分类汇总(2018年12月13日)

    关注我爱计算机视觉,一个有价值有深度的公众号 目标检测 今日重磅!恺明大神又一力作!重新思考万能的ImageNet预训练模型 YOLO-LITE:专门面向CPU的实时目标检测 Softer-NMS:C ...

  7. 52CV精华文章分类汇总(2018年12月1日)

    关注我爱计算机视觉,一个有价值有深度的公众号 目标检测 今日重磅!恺明大神又一力作!重新思考万能的ImageNet预训练模型 YOLO-LITE:专门面向CPU的实时目标检测 Softer-NMS:C ...

  8. HDU 4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)

    题意:给定n*m个格子,每个格子能填0-k 的整数.然后给出每列之和和每行之和,问有没有解,有的话是不是唯一解,是唯一解输出方案. 思路:网络流,一共 n+m+2个点   源点 到行连流量为 所给的 ...

  9. HDU 6072 Logical Chain (Biset+Kosaraju, 2017 Multi-Univ Training Contest 4)

    Problem Every time you come across a problem you've never seen before, haven't you thought of someth ...

最新文章

  1. 基于struts2的寝室圈项目
  2. 不合法的媒体文件 id_注意!伦敦男孩、DKNY、Coach、地素... 这些品牌的服装,抽检不合格...
  3. 17.前端路由router-07keep-alive
  4. 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
  5. jQuery验证表单插件——jquery-validation
  6. java日期格式化代码的写法_Java中的`DateTimeFormatter`格式化代码中的`uuuu`与`yyyy`?...
  7. Jmeter获取数据库数据
  8. Luogu5629 【AFOI-19】区间与除法
  9. 时间序列研(part14)--习题
  10. 什么是网点?印刷网点与CMYK色彩,彩色渐变色印刷原理。
  11. 如何用GoldWave交叉淡化两首音乐?
  12. 【BZOJ5470】[FJOI2018]所罗门王的宝藏()
  13. 我的世界启动器怎么更改java_我的世界启动器Java路径怎么设置?
  14. 神奇小子重启自动驾驶项目,推出开源软件Comma Neo
  15. 表空间脚本[置顶] Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
  16. 大一计算机基础excel文档,大一计算机应用基础办公自动化软件深入Excel复习用PPT课件.ppt...
  17. java 阴历阳历转换
  18. Delphi 2007 体验
  19. css样式文件的引入方式
  20. 2021牛客寒假算法基础集训营1 蒟弱补题日记

热门文章

  1. db2和mysql语句区别_db2和mysql语法的区别是什么
  2. wpsppt流程图联系效果_风险隐患排查的手段—HAZOP 与检查表的区别及应用效果
  3. 机器学习模型 知乎_机器学习-模型选择与评价
  4. 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你
  5. 大一计算机课实训总结1000字,大一计算机实训报告.doc
  6. 抓取手机https_python爬虫入门02:教你通过 Fiddler 进行手机抓包
  7. jquery 样式获取设置值_[JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式...
  8. php实现电脑自动关机,用批处理实现电脑自动关机
  9. php 实现类,php 获取页面中指定内容的实现类
  10. global.php,global.php