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. 初学HTML 常见的标签(一) 文本标签

    最近做iOS开发的过程中, 发现要涉及到JS和原生OC(Swift)的交互, 作为一个Developer, 本着克服一切问题的原则, 开始学习HTML, 在这里记录下自己的学习笔记, 方便以后的复习, ...

  2. iOS如何获取网络图片(一)

    static NSString * baseUrl = @"http://192.168.1.123/images/"; - (UITableViewCell *)tableVie ...

  3. [Java]Hessian客户端和服务端代码例子

    简要说明:这是一个比较简单的hessian客户端和服务端,主要实现从客户端发送指定的数据量到服务端,然后服务端在将接收到的数据原封不动返回到客户端.设计该hessian客户端和服务端的初衷是为了做一个 ...

  4. 挖一挖C#中那些我们不常用的东西之系列(3)——StackTrace,Trim

    时间太快了,三月又要过去了,告别一下...继续期待生死未卜的四月,今天我们继续挖一挖. 一: Environment.StackTrace 可能我们看到最多的就是catch中的e参数,里面会有一个St ...

  5. SSRS报表连接超时的问题

    这段时间遇到一个问题就是ReportService 中采用了远程连接的报表偶尔会断开连接,导致报表导出异常,查阅了很多资料,几天来就是断断续续的终于解决了这个问题,下面把一些解决的点一一展示出来,便于 ...

  6. 【shell--批量远程MySQL,执行命令】-【工作总结】

    昨天下班前,老板给了一批LOG数据库IP地址,需要统计LOG表里Message字段top 10的结果,并输出到一个excel文件里.抽查看了下,有两种格式的以当天日期结尾的表名.由于数量太多,时间紧迫 ...

  7. 安装mysql odbc遇到error 1918.errror installing ODBC driver mysql ODBC 5.3 ANSI Drive

    环境:Windows server2008r2 安装mysql-connector-odbc-5.3.6-win32 报错 相信错误信息:Error 1918.errror installing OD ...

  8. SQL Server 2012 学习笔记5

    1. 索引(Index) 索引是快速的定位和查找数据.索引分为: 聚集索引:唯一,默认主键,一般选取比较连贯的字段,聚集索引是物理排序. 非聚集索引: 并没有把数据物理排序,只是多了一个索引页(包括索 ...

  9. Linux计时器

    Linux中, 系统为每个系统都维护了三种计时器,分别为: 真实计数器, 虚拟计时器以及实用计时器, 一般情况下都使用真实计时器 getitimer()/setitimer() //读取/设置内部计时 ...

  10. gcc编译参数-fPIC的一些问题

    gcc编译参数-fPIC的一些问题 (2012-07-26 15:41:08) 转载▼ 标签: linux compiler gcc -fpic it 分类: NSN_BspDriver ppc_85 ...