Description

对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。

Input

第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、d、k

Output

共n行,每行一个整数表示满足要求的数对(x,y)的个数

HINT

100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000

  过了这么久终于写出了莫比乌斯反演的入门题TAT……

  这道题主要用到了莫比乌斯函数的一个性质,对于任意正整数$n$,有:$$\sum_{d|n} \mu (d)=  \begin{cases} 1 &(n=1) \\ 0 &(n>1) \end{cases}$$

  所以$[gcd(i,j)=1]$这个式子可以表示为:$$\sum_{d|gcd(i,j)}\mu (d)$$

  于是莫比乌斯反演对于处理$gcd(x,y)=1$这类条件时特别好用。

  莫比乌斯反演戳这里

  本题题解参见黄学长的博客(我已经翻到上一页了……想看本题代码请翻下一篇)

  毕竟我就是看着黄学长的博客做出来的……

  下面贴代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
#define maxn 50010 using namespace std;
typedef long long llg; int T,a,b,c,d,k,ls;
int mu[maxn],s[maxn],w[maxn];
bool vis[maxn]; int getint(){
int w=0;bool q=0;
char c=getchar();
while((c>'9'||c<'0')&&c!='-') c=getchar();
if(c=='-') c=getchar(),q=1;
while(c>='0'&&c<='9') w=w*10+c-'0',c=getchar();
return q?-w:w;
} void get(){//线性筛素数与莫比乌斯函数
mu[1]=1;
for(int i=2;i<maxn;i++){
if(!vis[i]) s[++ls]=i,mu[i]=-1;
for(int j=1;j<=ls && s[j]*i<maxn;j++){
vis[s[j]*i]=1;
if(i%s[j]) mu[s[j]*i]=-mu[i];
else{mu[s[j]*i]=0;break;}
}
}
for(int i=1;i<maxn;i++) w[i]=w[i-1]+mu[i];
} llg F(int n,int m){//求出x在[1,n]中、y在[1,m]中的答案
llg ans=0;
if(n>m) swap(n,m);
for(int i=1,nt;i<=n;i=nt+1){
nt=min(n/(n/i),m/(m/i));
ans+=(llg)(w[nt]-w[i-1])*(llg)(n/i)*(llg)(m/i);
}
return ans;
} int main(){
File("a");
get(); T=getint();
while(T--){
a=getint(); b=getint(); c=getint();
d=getint(); k=getint(); a--; c--;//注意边界
a/=k; b/=k; c/=k; d/=k;
printf("%lld\n",F(b,d)-F(a,d)-F(b,c)+F(a,c));//转化为前缀和容斥求解
}
return 0;
}

BZOJ 2301 【HAOI2011】 Problem b的更多相关文章

  1. 【BZOJ2301】【HAOI2011】Problem B(莫比乌斯反演)

    [BZOJ2301][HAOI2011]Problem B(莫比乌斯反演) 题面 Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y ...

  2. 清北学堂例题 LUOGU2519 【HAOI2011】PROBLEM A

    题目描述 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行 ...

  3. 【BZOJ2301】【HAOI2011】Problem b [莫比乌斯反演]

    Problem b Time Limit: 50 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 对于给出的n个询问,每次 ...

  4. 【HAOI2011】problem b

    数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...

  5. 【HAOI2011】problem a

    又看题解了,这样下去要跪啊QAQ 原题: 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 1≤n≤100000   0≤ ...

  6. 清北学堂例题 LUOGU2523【HAOI2011】problem c

    题目描述 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了,就尝试ai+1 ...

  7. 【题解】【HAOI2011】Problem b

    \(Luogu2522\) 题目大意:求下面式子的值: \[\sum_{i=x}^n\sum_{j=y}^m[\gcd(i,j)=k] \] 这个东西直接求不好求,考虑差分,从\([1,n]\)的范围 ...

  8. 【BZOJ2998】Problem A(动态规划)

    [BZOJ2998]Problem A(动态规划) 题面 BZOJ 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接\(dp ...

  9. BZOJ 1854 【Scoi2010】 游戏

    Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性 ...

随机推荐

  1. NSPredicate

    NSPredicate 1. 正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.通常被用来检索.替换那些符合某个模式的文本. 2. iOS中正则使用 有三种(NSPredicate, ...

  2. iOS字体换算 PS的字体大小 <=>iOS上字体大小

  3. IOS开发之待探究随录

    设置导航条的问题

  4. @在php中的作用

    @是PHP提供的错误信息屏蔽的专用符号. 使用@mysql_query 不会出现Warning,而原来mysql_query 在遇到错误时会在页面上访提示Warning. 看PHP的代码,总有些行前边 ...

  5. Java注解一谈

    阅读目录 1.元注解 2.自定义注解 3.注解处理器 android注解框架解析 我们经常会在java代码里面看到:“@Override”,“@Target”等等样子的东西,这些是什么? 在java里 ...

  6. linux性能监控工具

    1.uptime 该命令直观的显示了服务器在过去15分钟,5分钟,1分钟内的平均负载   2.vmstat 每隔2秒输出vmstat的信息,共输出10次. 类别 procs swap io   sys ...

  7. 常用的主机监控Shell脚本

    最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能 ...

  8. 0015 Java学习笔记-集合-TreeMap集合

    主要的方法 构造方法: TreeMap(); TreeMap(Comparator<?super K> comparator); TreeMap(Map<? extends K,? ...

  9. SQL Server中的RAND函数的介绍和区间随机数值函数的实现

        工作中会遇到SQL Server模拟数据生成以及数值列值(如整型.日期和时间数据类型)随机填充等等任务,这些任务中都要使用到随机数.鉴于此,本文将对SQL Server中随机数的使用简单做个总 ...

  10. 如何编译ReactNative示例程序Examples

    通过示例程序可以看到一些基本组件的使用,对于学习ReactNative是很有帮助的. 编译示例程序需要将整个项目导入到androidStudio中,androidStudio导入项目时选择react- ...