BZOJ 1101 Zap(莫比乌斯反演)
http://www.lydsy.com/JudgeOnline/problem.php?id=1101
给定a,b,d,求有多少gcd(x,y)==d(1<=x<=a&&1<=y<=b)
思路:
Σgcd(x,y)==d (1<=x<=a,1<=y<=b)
=
Σgcd(x,y)==1 (1<=x<=a/d,1<=y<=b/d)
令G(i)=num(i|gcd(x,y))=n/i*m/i
g(i)=num(i=gcd(x,y))
g(i)=ΣG(d)*u(d/i) (i|d)
则答案就是g(1)
g(1)=ΣG(i)*u(i) (1<=i<=min(n,m))
=Σ(n/i)*(m/i)*u(i)
因此做出u(i)的前缀和,这样就可以一起处理n/i和m/i相同的i
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
int mul[],mark[],sum[],p[];
int read(){
char ch=getchar();int t=,f=;
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
void init(){
mul[]=;
for (int i=;i<=;i++){
if (!mark[i]){
p[++p[]]=i;
mul[i]=-;
}
for (int j=;j<=p[]&&i*p[j]<=;j++){
mark[p[j]*i]=;
if (i%p[j]) mul[p[j]*i]=mul[i]*(-);
else {
mul[p[j]*i]=;
break;
}
}
}
sum[]=;
for (int i=;i<=;i++)
sum[i]=sum[i-]+mul[i];
}
int cal(int a,int b){
if (a>b) std::swap(a,b);
int res=,n=a,m=b;
for (int i=,j;i<=a;i=j+){
j=std::min(n/(n/i),m/(m/i));
res+=(a/i)*(b/i)*(sum[j]-sum[i-]);
}
return res;
}
int main(){
int Q=read();
init();
while (Q--){
int a=read(),b=read(),d=read();
printf("%d\n",cal(a/d,b/d));
}
}
BZOJ 1101 Zap(莫比乌斯反演)的更多相关文章
- bzoj 1101 Zap —— 莫比乌斯反演
		
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 直接莫比乌斯反演. 代码如下: #include<cstdio> #inc ...
 - bzoj 1101  zap  莫比乌斯
		
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给 ...
 - 【题解】Zap(莫比乌斯反演)
		
[题解]Zap(莫比乌斯反演) 裸题... 直接化吧 [P3455 POI2007]ZAP-Queries 所有除法默认向下取整 \[ \Sigma_{i=1}^x\Sigma_{j=1}^y[(i, ...
 - bzoj [SDOI2014]数表 莫比乌斯反演 BIT
		
bzoj [SDOI2014]数表 莫比乌斯反演 BIT 链接 bzoj luogu loj 思路 \[ \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}a*[f[ ...
 - BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+数论分块)
		
手动博客搬家: 本文发表于20171216 13:34:20, 原地址https://blog.csdn.net/suncongbo/article/details/78819470 URL: (Lu ...
 - 1101: [POI2007]Zap(莫比乌斯反演)
		
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MB Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定 ...
 - BZOJ1101: [POI2007]Zap(莫比乌斯反演)
		
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2951 Solved: 1293[Submit][Status ...
 - Bzoj1101: [POI2007]Zap 莫比乌斯反演+整除分块
		
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1101 莫比乌斯反演 1101: [POI2007]Zap 设 \(f(i)\) 表示 \(( ...
 - 【BZOJ1101】Zap [莫比乌斯反演]
		
Zap Time Limit: 10 Sec Memory Limit: 162 MB[Submit][Status][Discuss] Description 对于给定的整数a,b和d,有多少正整 ...
 
随机推荐
- hdu 3047 Zjnu Stadium
			
http://acm.hdu.edu.cn/showproblem.php?pid=3047 带权并差集 #include <cstdio> #include <cstring> ...
 - grok 添加字段
			
filter { grok { match =>[ "message","%{IPORHOST:clientip} \[%{HTTPDATE:time}\] \&q ...
 - HDU 1074 Doing Homework (状态压缩 DP)
			
题目大意: 有 n 项作业需要完成,每项作业有上交的期限和需完成的天数,若某项作业晚交一天则扣一分.输入每项作业时包括三部分,作业名称,上交期限,完成所需要的天数.求出完成所有作业时所扣掉的分数最少, ...
 - 7款纯CSS3实现的炫酷动画应用|慕课网只学有用的!
			
关于我们 | 时尚廊 ♦ 时尚廊,中国大陆地区首家以"Lounge"为概念的艺文空间 ♦ 7款纯CSS3实现的炫酷动画应用|慕课网只学有用的! 7款纯CSS3实现的炫酷动画应用
 - 自己写jstl标签解析long时间
			
数据库里存储的是long型的时间,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个fmt:formatDate可以转化,但是只能转date型,long型则不可 ...
 - time date 基础操作
			
一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...
 - php字符串标点等字符截取不乱吗 封装方法
			
方法一: /** +---------------------------------------------------------- * 功能:字符串截取指定长度 * leo.li hen ...
 - Selenium WebDriver 学习笔记
			
1. 打开VS2012 2. 新建工程(单元测试工程或控制台程序都可以, 看需求) 3. 工具->NuGet程序包管理器->程序包管理器控制台 4. 输入"Install-Pac ...
 - Linq GroupJoin 使用
			
备忘: var data = BoshccEntities.Current.TB_MB_1 .GroupJoin(BoshccEntities.Current.TB_MB_2, o => o.H ...
 - .Net Errors
			
1.Unknown column 'Extent1.Discriminator' in 'field list' Resole:http://blog.csdn.net/philip502/artic ...