当前位置: 首页 > news >正文

P2522 [HAOI2011] Problem b

P2522 [HAOI2011] Problem b

大意

\[\sum_{x=a}^b \sum_{y=c}^d [\gcd(x, y) = k] \]

思路

利用 容斥原理,我们可以将区间 \([a, b]\)\([c, d]\) 的限制简化为从 \(1\) 开始的形式。令 \(f(n, m, k)\) 表示 \(1 \le x \le n, 1 \le y \le m\)\(\gcd(x, y) = k\) 的个数,则原式等于:

\[f(b, d, k) - f(a-1, d, k) - f(b, c-1, k) + f(a-1, c-1, k) \]

对于 \(f(n, m, k)\),满足 \(\gcd(x, y) = k\) 等价于 \(\gcd(\frac{x}{k}, \frac{y}{k}) = 1\)

\(n' = \lfloor \frac{n}{k} \rfloor, m' = \lfloor \frac{m}{k} \rfloor\),我们要算的是:

\[\sum_{i=1}^{n'} \sum_{j=1}^{m'} [\gcd(i, j) = 1] \]

利用莫比乌斯函数的性质 \(\sum_{d|\gcd(i,j)} \mu(d) = [\gcd(i, j) = 1]\),代入得:

\[\sum_{i=1}^{n'} \sum_{j=1}^{m'} \sum_{d|\gcd(i, j)} \mu(d) \]

通过枚举 \(d\) 调整求和顺序:

\[\sum_{d=1}^{\min(n', m')} \mu(d) \lfloor \frac{n'}{d} \rfloor \lfloor \frac{m'}{d} \rfloor \]

代码

#include<bits/stdc++.h>
using namespace std;const int MAXN = 50005;
int mu[MAXN], pr[MAXN];
bool vis[MAXN];
int sum[MAXN], tot = 0;void init(int n){mu[1] = 1;for(int i = 2;i <= n;i ++){if(!vis[i]){pr[++ tot] = i;mu[i] = -1;}for(int j = 1;j <= tot && pr[j] * i <= n;j ++){vis[pr[j] * i] = 1;if(i % pr[j] == 0){mu[pr[j] * i] = 0;break;}mu[pr[j] * i] = -mu[i];}}for(int i = 1;i <= n;i ++){sum[i] = sum[i - 1] + mu[i];}
}long long count(int a, int b, int d){a /= d, b /= d;if(a > b) swap(a, b);long long ans = 0;for(int l = 1, r;l <= a;l = r + 1){r = min(a / (a / l), b / (b / l));ans += (long long)(sum[r] - sum[l - 1]) * (a / l) * (b / l);}return ans;
}int main(){init(50000);int t; cin >> t;while(t --){int a, b, c, d, k;cin >> a >> b >> c >> d >> k;long long res = count(b, d, k) - count(a - 1, d, k) - count(b, c - 1, k) + count(a - 1, c - 1, k);cout << res << '\n';}return 0;
}
http://www.jsqmd.com/news/417101/

相关文章:

  • golang proto3 使用 - liyan
  • PaperZZ论文查重系统全解析:从查重到AIGC检测,一站式学术诚信守护方案
  • 【译文/effective-rust】第 27 条:为公共接口撰写文档 - liyan
  • golang GMP - liyan
  • eBPF tail-calls示例 - liyan
  • 视频创作者最易踩的5个版权“深坑”,你中了几个
  • ebpf 采集ebpf 采集tag+tcp五元组 - liyan
  • 正则替换拷贝
  • emacs-若干语言 lsp 配置备注 - liyan
  • Linux sed 命令
  • 【面板数据】更新-省级产业结构高级化及合理化数据-含代码(2000-2024年)
  • AgentRun 实践指南:Agent 的宝藏工具——All-In-One Sandbox
  • Emacs 字符操作快捷键 - liyan
  • 全国艺术留学推荐,看看满足条件后哪个学校和中介通过率更高 - mypinpai
  • win10 安装ffmpeg
  • 浙江杭泰产品质量与种类情况,在多地服务的费用贵吗 - 工业推荐榜
  • Gemini 3.1 Flash Image (Nano Banana 2) API 评测:从参数到落地,我替你踩了坑 - 147API
  • 2026年化工生产用氨水采购指南:脱硫/电子级/食品级氨水专业供应商推荐 - 品牌推荐官
  • 岱宇国际在上海的口碑排名,看看其技术实力、品牌知名度和用户体验 - myqiye
  • 分析2026年宁德性价比高的全屋定制,生产厂合作案例多的排名 - 工业品牌热点
  • Rust枚举OptionT
  • 2026年GEO营销风向标:国内领先的GEO整合营销服务商排名及TOP 3选型指南 - 资讯焦点
  • 2026年最新喷胶厂商实力排行榜:基于环保性能与市场口碑的五大公司权威推荐榜单 - 十大品牌榜
  • 2026年全国聚丙烯纤维厂家权威榜单 靠谱优质实力强 抗裂增强适配多工程场景 - 深度智识库
  • 暑期亲子草原游,呼和浩特哪家旅行社有牧民体验?手把手教你选对呼和浩特亲子草原游,3步识别真动手、真牧户、真安全 - 资讯焦点
  • project管理工具哪个好?2026年project管理工具推荐与排名,解决定制化与安全痛点 - 十大品牌推荐
  • 2026实验室排风厂家五大推荐:迅领实验室领衔,打造安全高效实验环境 - 深度智识库
  • js--28
  • project管理软件哪个好?2026年project管理软件推荐与排名,解决复杂项目与效能度量核心痛点 - 十大品牌推荐
  • 计算机毕业设计springboot高校学生社团管理系统 基于SpringBoot框架的大学生社团活动管理平台设计与实现 高校学生组织数字化运营系统——以社团管理为核心的信息化解决方案