GuGuFishtion(2018 Multi-University Training Contest 7)
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∑mb=1∑nϕ(a)ϕ(b)ϕ(a,b)=a=1∑mb=1∑nϕ(gcd(a,b))gcd(a,b)=d=1∑mϕ(d)da=1∑dmb=1∑dmgcd(a,b)==1=d=1∑mϕ(d)da=1∑dmb=1∑dmk∣gcd(a,b)∑μ(k)我们约定n,m,满足n<m=d=1∑nϕ(d)dk=1∑dnμ(k)⌊kdn⌋⌊kdm⌋
接下来我们只要筛选出前1e61e61e6个数的ϕandμ\phi \ and\ \muϕ and μ,再通过两次数论分块即可整体复杂度是O(nn)=O(n)。O(\sqrt n\sqrt n )= O(n)。O(nn)=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)相关推荐
- MF_RC522_射频识别参考程序注释(2018年4月27号)
MF_RC522_射频识别参考程序注释(2018年4月27号) https://wenku.baidu.com/view/478e6bb17f1922791688e8f8.html
- 2018-12 jdk_JDK 12新闻(2018年9月13日)
2018-12 jdk 由于计划于本月晚些时候(2018年9月25日)发布JDK 11的 一般可用性 ,是时候开始更仔细地研究JDK 12了 . 在OpenJDK jdk-dev邮件列表上的标题为&q ...
- 数据分享|MuSyQ高分16米/10天叶面积指数产品(2018–2020年中国01版)
摘要 叶面积指数(leaf area index,LAI)是研究植被生态系统结构和功能的核心参数之一,遥感是获取大范围动态LAI的一个主要技术手段.但目前国际上没有高分辨率的LAI标准化产品,本文利用 ...
- 微博签到打卡poi数据(2018年1月-2022年)
微博签到数据(2018年1月-2022年) 微博签到打卡poi数据 包括地理位置经纬度.签到地点.微博链接.博主主页链接.正文内容.图片视频链接(均可高清下载).发表时间.转发数.评论数.点赞数等字段 ...
- JDK 12新闻(2018年9月13日)
随着通用性的JDK 11计划在本月底(2018 9月25日),这是一个好时机,开始在更紧密地看着JDK 12 . 在OpenJDK jdk-dev邮件列表上的标题为" JDK 12的计划时间 ...
- 我爱计算机视觉精华文章分类汇总(2018年12月13日)
关注我爱计算机视觉,一个有价值有深度的公众号 目标检测 今日重磅!恺明大神又一力作!重新思考万能的ImageNet预训练模型 YOLO-LITE:专门面向CPU的实时目标检测 Softer-NMS:C ...
- 52CV精华文章分类汇总(2018年12月1日)
关注我爱计算机视觉,一个有价值有深度的公众号 目标检测 今日重磅!恺明大神又一力作!重新思考万能的ImageNet预训练模型 YOLO-LITE:专门面向CPU的实时目标检测 Softer-NMS:C ...
- HDU 4888 Redraw Beautiful Drawings(2014 Multi-University Training Contest 3)
题意:给定n*m个格子,每个格子能填0-k 的整数.然后给出每列之和和每行之和,问有没有解,有的话是不是唯一解,是唯一解输出方案. 思路:网络流,一共 n+m+2个点 源点 到行连流量为 所给的 ...
- 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 ...
最新文章
- 基于struts2的寝室圈项目
- 不合法的媒体文件 id_注意!伦敦男孩、DKNY、Coach、地素... 这些品牌的服装,抽检不合格...
- 17.前端路由router-07keep-alive
- 8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国
- jQuery验证表单插件——jquery-validation
- java日期格式化代码的写法_Java中的`DateTimeFormatter`格式化代码中的`uuuu`与`yyyy`?...
- Jmeter获取数据库数据
- Luogu5629 【AFOI-19】区间与除法
- 时间序列研(part14)--习题
- 什么是网点?印刷网点与CMYK色彩,彩色渐变色印刷原理。
- 如何用GoldWave交叉淡化两首音乐?
- 【BZOJ5470】[FJOI2018]所罗门王的宝藏()
- 我的世界启动器怎么更改java_我的世界启动器Java路径怎么设置?
- 神奇小子重启自动驾驶项目,推出开源软件Comma Neo
- 表空间脚本[置顶] Oracle 数据库表空间容量调整(表空间缩容脚本)脚本
- 大一计算机基础excel文档,大一计算机应用基础办公自动化软件深入Excel复习用PPT课件.ppt...
- java 阴历阳历转换
- Delphi 2007 体验
- css样式文件的引入方式
- 2021牛客寒假算法基础集训营1 蒟弱补题日记
热门文章
- db2和mysql语句区别_db2和mysql语法的区别是什么
- wpsppt流程图联系效果_风险隐患排查的手段—HAZOP 与检查表的区别及应用效果
- 机器学习模型 知乎_机器学习-模型选择与评价
- 3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你
- 大一计算机课实训总结1000字,大一计算机实训报告.doc
- 抓取手机https_python爬虫入门02:教你通过 Fiddler 进行手机抓包
- jquery 样式获取设置值_[JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式...
- php实现电脑自动关机,用批处理实现电脑自动关机
- php 实现类,php 获取页面中指定内容的实现类
- global.php,global.php