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)的个数
Sample Input
2
2 5 1 5 1
1 5 1 5 2
Sample Output
14
3
Hint
100%的数据满足:1≤n≤50000,1≤a≤b≤50000,1≤c≤d≤50000,1≤k≤50000
思路:
我们先求1<=i<=b,1<=j<=d这个范围内的gcd(x,y)=k的个数。
可以看我的另一篇:acwing215.破译密码题解(容斥原理+mobius函数)_yusen_123的博客-CSDN博客
当可以求出1<=i<=b,1<=j<=d这个范围内的gcd(x,y)=k的个数。
我们设1<=i<=b,1<=j<=d这个范围内的gcd(x,y)=k的个数为slove(b,d).
我们可以用solve(b,d)-solve(a,d)-solve(b,c)+solve(a,c)求出答案.
代码:
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include