洛谷 P3455BZOJ1101 【[POI2007]ZAP-Queries】
这应该是入坑莫比乌斯反演的第一道题了吧
其实题目让我们求的东西很简单,就是
\[ ans=\sum_{i=1}^{a}\sum_{j=1}^{b}\left [ gcd(i,j)=k \right ]\]
然后,显然,我们可以再化简一下,其实刚刚的式子就等价于
\[ans=\sum_{i=1}^{a/k}\sum_{j=1}^{b/k}\left [ gcd(i,j)=1 \right ]\]
但是,显然这个东西是十分不好算的
因为这是一道莫比乌斯反演的经典题,所以我们可以套一套
不妨设
\[f(x)=\sum_{i=1}^{a/k}\sum_{j=1}^{b/k}\left [ gcd(i,j)=x \right ]\]
那么,显然ans=f(1)
又可以设
\[g(x)=\sum_{i=1}^{a/k}\sum_{j=1}^{b/k}\left [ x|gcd(i,j) \right ]\]
这东西显然就等于
\[\left \lfloor \frac{a}{kx} \right \rfloor*\left \lfloor \frac{b}{kx} \right \rfloor\]
由两个函数的定义便可以证得
\[g(x)=\sum_{x|k,x<=n}^{}f(x)\]
然后就是熟悉的味道了
具体见代码
#include<cstdio>
#include<iostream>
using namespace std;
long long maxn=1e5+10;
long long miu[100010],vis[100010];
void mobius()
{for(int i=1;i<=maxn;++i)miu[i]=1;for(int i=2;i<=maxn;++i){if(!vis[i]){miu[i]=-1;for(int j=i+i;j<=maxn;j+=i){vis[j]=1;if((j/i)%i==0) miu[j]=0;else miu[j]*=-1;}}}for(int i=1;i<=maxn;++i)miu[i]+=miu[i-1];
}
int main()
{mobius();int T;int a,b,k;scanf("%lld",&T);for(long long _=1;_<=T;++_){long long ans=0;scanf("%d%d%d",&a,&b,&k);int tmp=min(a,b);int r;for(int l=1;l<=tmp;l=r+1){r=min(a/(a/l),b/(b/l));ans=ans+(miu[r]-miu[l-1])*(a/(l*k))*(b/(l*k));}printf("%lld\n",ans);}return 0;
}
转载于:https://www.cnblogs.com/HenryHuang-Never-Settle/p/10478803.html
洛谷 P3455BZOJ1101 【[POI2007]ZAP-Queries】相关推荐
- 洛谷 P3460 [POI2007]TET-Tetris Attac
[POI2007]TET-Tetris Attack 题目描述 一种名为 Tetris Attack 的猜谜游戏风靡 Byteotia.游戏本身非常复杂,因此我们只介绍它的简化规则: 玩家拥有一个有 ...
- 洛谷 P3455 [POI2007]ZAP-Queries (莫比乌斯反演)
题意: 给定a,b,d求gcd(x,y)=d的对数(1<=x<=a,1<=y<=b) 思路:按照套路来先设f(n)为gcd(x,y)=n的对数,g(n)表示为 n | gcd( ...
- 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)
传送门 我们考虑容斥,设$ans(a,b)=\sum_{i=1}^a\sum_{j=1}^b[gcd(a,b)==k]$,这个东西可以和这一题一样去算洛谷P3455 [POI2007]ZAP-Quer ...
- 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛
洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
- 洛谷 P1142 轰炸
洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...
- 洛谷 P1387 最大正方形
P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...
- 洛谷P2763 试题库问题
题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...
- 动态规划——洛谷_P1057传球游戏
题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...
最新文章
- Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数、复制到Excel文件、复制到文本文件(默认是tsv格式)、复制到文本文件(设置逗号分隔符)
- ASP.net远程调试笔记
- HDOJ1861 游船出租
- iOS简单实现查看更多/收起的效果[最新]
- 爬虫入门(简单网页信息爬取)
- AI艺术的发展:让艺术通过人工智能变得更具创造力和人性化
- python基础之字符串(七)
- Oracle中根据注释来查表名
- 三元组顺序表表示的稀疏矩阵转置(10分)
- 强化学习-入门教程(完整版)
- swift 隐藏状态栏_swift 同时修改状态栏和导航栏出现的问题及解决的方法
- 司铭宇老师谈大客户销售技巧之如何做好大客户营销
- 云原生开发者训练营启动!3天教会你玩转Serverless
- Kmplayer实在太夸张了。
- 企业财务报表查询方式
- 整数划分问题 递归 动态规划 openjudge 百练 python
- 安装运行Hyperf
- mysql查询表的字段、字段类型、字段名称
- js观察者模式on、emit、off、once实现
- Mac ls 出现问号 “?“