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

其实题目让我们求的东西很简单,就是

\[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;
}

洛谷 P3455&BZOJ1101 【[POI2007]ZAP-Queries】的更多相关文章

  1. BZOJ1101 & 洛谷3455:[POI2007]ZAP——题解

    https://www.luogu.org/problemnew/show/3455#sub http://www.lydsy.com/JudgeOnline/problem.php?id=1101 ...

  2. 洛谷P3455 ZAP-Queries [POI2007] 莫比乌斯反演+数论分块

    正解:莫比乌斯反演 解题报告: 传送门! 首先这题刚看到就很,莫比乌斯反演嘛,和我前面写了题解的那个一模一样的,所以这儿就不讲这前边的做法辣QAQ 但是这样儿还有个问题,就现在已知我每次都是要O(n) ...

  3. [BZOJ1101][POI2007]Zap

    [BZOJ1101][POI2007]Zap 试题描述 FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd ...

  4. BZOJ1101 POI2007 Zap 【莫比乌斯反演】

    BZOJ1101 POI2007 Zap Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b, ...

  5. 莫比乌斯反演学习笔记+[POI2007]Zap(洛谷P3455,BZOJ1101)

    先看一道例题:[POI2007]Zap BZOJ 洛谷 题目大意:$T$ 组数据,求 $\sum^n_{i=1}\sum^m_{j=1}[gcd(i,j)=k]$ $1\leq T\leq 50000 ...

  6. BZOJ1101 [POI2007]Zap 和 CF451E Devu and Flowers

    Zap FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...

  7. BZOJ1101: [POI2007]Zap(莫比乌斯反演)

    1101: [POI2007]Zap Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2951  Solved: 1293[Submit][Status ...

  8. Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...

  9. 洛谷 P3455 [POI2007]ZAP-Queries (莫比乌斯函数)

    题目链接:P3455 [POI2007]ZAP-Queries 题意 给定 \(a,b,d\),求 \(\sum_{x=1}^{a} \sum_{y=1}^{b}[gcd(x, y) = d]\). ...

随机推荐

  1. 浅谈Semaphore类

    Semaphore类有两个重要方法 1.semaphore.acquire(); 请求一个信号量,这时候信号量个数-1,当减少到0的时候,下一次acquire不会再执行,只有当执行一个release( ...

  2. Android入门第一课之Java基础

    通知:由于本周六场地申请没通过,所以本周的培训临时取消. 今天给大家带来的是Android入门的第一课,由于教室申请的不确定性,因此,每次培训的内容都会在博客先提前释放出来.首先Android的APP ...

  3. [安卓]ListView 与 RecyclerView的比较

    ListView与RecyclerView在在app应用非常广泛,相对于其他的view(button textview)来说比较复杂,接下来我将讲一下创建的流程以及两者的不同. 代码来自<第一行 ...

  4. CentOS7 设置yum源

    1.关闭防火墙 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机自关闭 systemctl disable firewalld 临时打开防火墙 systemctl st ...

  5. Maven替换为国内仓库

    <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name&g ...

  6. 理解ECS的概念和Unity中的ECS设计

    组合优于继承 ecs的概念很早就有了,最初的主要目的应该还是为了改善设计. e-c-s三者都有其意义,e-c是组合优于继承,主要用以改善oo的继承耦合过重以及多继承菱形问题. oop常见设计里,每个g ...

  7. 电脑出现问题如何修复Windows 10

    也许Windows 10无法启动.或者它可能会靴子,但会崩溃很多.在任何一种情况下,您都需要在使用PC之前解决问题.以下是修复Windows 10的几种方法. 方法1:使用Windows启动修复 如果 ...

  8. Markdown语法指南

    1.背景 个人比较喜欢用Markdonw写东西,比如写博客随笔,写有道云笔记等,但有的时候会突然忘记某个具体语法怎么写了,如插入图片.插入链接.表格等,那干脆把这个语法简单地总结一下,也方便日后快速查 ...

  9. LeetCode算法题-Hamming Distance(Java实现)

    这是悦乐书的第237次更新,第250篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第104题(顺位题号是461).两个整数之间的汉明距离是相应位不同的位置数.给定两个整数 ...

  10. mysql的分组

    以下是根据老师的视屏写的总结,要自己实际操作以下. 首先老师一顿操作猛如虎,得到以下的表. 然后进行以下的操作: 发现筛选时报错了,老师的解释实说,分组是因为mysql不知道选择谁而出现报错,因为pa ...