这应该是入坑莫比乌斯反演的第一道题了吧

其实题目让我们求的东西很简单,就是
\[ 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】相关推荐

  1. 洛谷 P3460 [POI2007]TET-Tetris Attac

    [POI2007]TET-Tetris Attack 题目描述 一种名为 Tetris Attack 的猜谜游戏风靡 Byteotia.游戏本身非常复杂,因此我们只介绍它的简化规则: 玩家拥有一个有 ...

  2. 洛谷 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( ...

  3. 洛谷P2522 [HAOI2011]Problem b(莫比乌斯反演)

    传送门 我们考虑容斥,设$ans(a,b)=\sum_{i=1}^a\sum_{j=1}^b[gcd(a,b)==k]$,这个东西可以和这一题一样去算洛谷P3455 [POI2007]ZAP-Quer ...

  4. 洛谷 P3184 [USACO16DEC]Counting Haybales数草垛

    洛谷 P3184 [USACO16DEC]Counting Haybales数草垛 题目描述 Farmer John has just arranged his NN haybales (1 \leq ...

  5. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  6. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  7. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  8. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  9. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

最新文章

  1. Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数、复制到Excel文件、复制到文本文件(默认是tsv格式)、复制到文本文件(设置逗号分隔符)
  2. ASP.net远程调试笔记
  3. HDOJ1861 游船出租
  4. iOS简单实现查看更多/收起的效果[最新]
  5. 爬虫入门(简单网页信息爬取)
  6. AI艺术的发展:让艺术通过人工智能变得更具创造力和人性化
  7. python基础之字符串(七)
  8. Oracle中根据注释来查表名
  9. 三元组顺序表表示的稀疏矩阵转置(10分)
  10. 强化学习-入门教程(完整版)
  11. swift 隐藏状态栏_swift 同时修改状态栏和导航栏出现的问题及解决的方法
  12. 司铭宇老师谈大客户销售技巧之如何做好大客户营销
  13. 云原生开发者训练营启动!3天教会你玩转Serverless
  14. Kmplayer实在太夸张了。
  15. 企业财务报表查询方式
  16. 整数划分问题 递归 动态规划 openjudge 百练 python
  17. 安装运行Hyperf
  18. mysql查询表的字段、字段类型、字段名称
  19. js观察者模式on、emit、off、once实现
  20. Mac ls 出现问号 “?“

热门文章

  1. HBase 与Hive数据交互整合过程详解
  2. 校园职业社交Handshake获1005万美金A轮融资
  3. linux远程跳板机超时
  4. 阿里巴巴国际站询盘是什么意思?如何提高询盘率
  5. nodejs 获取url字段
  6. 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer
  7. 科普| 什么是图数据库?
  8. Android 面试 - 有关Service的面试题
  9. Java StringBuffer的用法
  10. select默认文字,不出现在下拉选项中