【HAOI2011】 Problem b(数论函数+卷积)

 

【HAOI2011】 Problem b

题目描述

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

输入格式

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

输出格式

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

说明/提示

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

【解题思路】

 可以将所求的值简化为下方公式:

推导过程如下:

先将(i,j)==k,同时给范围和值除以k,得到,(i,j)==1就非常好处理,互质

用元函数代换掉条件表达式,利用狄利克雷卷积代换

然后枚举d,同时将gcd进行转化,当d能够同时被i,j整除(图里写错了,应该是(i%d)==0,(j%d)==0,orz)时条件成立

所以就能够再次对i,j范围进行缩减,这样就能够得到图中右下的公式

通过数论整除和埃筛就能够快速求到1~n和1~m范围内的值的总和

 

然后利用二维空间上的容斥思想,减去重复部分

得到最终答案

 

View Code

 

 

posted @ 2019-07-27 19:11  rentu  阅读(119)  评论(0编辑  收藏  举报