/***
对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数
**/
#include <iostream>
#include <cstdio>
#include <algorithm> using namespace std;
const int maxn = ;
int isprime[maxn],prime[maxn],mu[maxn],sum[maxn]; int t,a,b,c,d,k;
int cnt;
void mobius(int n){
int i,j;
cnt =;
mu[] =;
for(i=;i<=n;i++){
if(!isprime[i]){
prime[cnt++] = i;
mu[i] = -;
}
for(j=;j<cnt&&i*prime[j]<=n;j++){
isprime[i*prime[j]] = ;
if(i%prime[j])
mu[i*prime[j] ] = -mu[i];
else{
mu[i*prime[j]] = ;
break;
}
}
}
} long long solve(int n,int m){
int i,la;
long long ret =;
if(n>m)
swap(n,m);
for(i=,la=;i<=n;i=la+){
la = min(n/(n/i),m/(m/i));
ret += (long long )(sum[la]-sum[i-])*(n/i)*(m/i);
}
return ret;
} int main(){
int i,j;
mobius();
for(i=;i<;i++)
sum[i] = sum[i-]+mu[i];
scanf("%d",&t);
while(t--){
scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
long long ans;
ans = solve(b/k,d/k)-solve((a-)/k,d/k)
-solve((c-)/k,b/k)+solve((a-)/k,(c-)/k);
printf("%lld\n",ans);
}
return ;
}

最新文章

  1. PHP静态化
  2. Spring 配置文件中将common.properties文件外置
  3. js节点属性
  4. UE4在Android调用Project Tango
  5. RHadoop教程翻译系列 _Mapreduce(1)_第一个Mapreduce任务
  6. ASP.NET 模板引擎 - NVelocity
  7. 【数学.前左上计数法】【HDU1220】Cube
  8. Java学习笔记-File类的基本方法
  9. C++学习笔记1--基础知识
  10. erlang在redhat上的安装
  11. react 16 ssr的重构踩坑
  12. oracle sql developer 创建数据库链接
  13. python之路——25
  14. chinalife的经验
  15. php 延迟静态绑定: static关键字
  16. 安装及使用virtualenv
  17. 用nodejs搭建BS环境
  18. python3 判断字符串是否为IP
  19. 记我的第一个python爬虫
  20. Linux服务器部署系列之一—Apache篇(上)

热门文章

  1. 关于Struts2的碎碎念
  2. 解决[warn] _default_ VirtualHost overlap on port 80, the first has precedence问题
  3. CCNA实验(8) -- PPP &amp; HDLC
  4. 【hadoop】14、hadoop2.5的mapreduce的 配置
  5. C# 动态载入Dll
  6. VS2015自定义注释内容
  7. HTML系列(一):创建HTML文档
  8. zoj 2966 Build The Electric System
  9. Oracle中的Spool缓冲池技术可以实现Oracle导出txt格式文件
  10. &lt;精华篇&gt;:iOS视频大全-持续更新