HYSBZ 2301
2024-10-08 20:54:07
/***
对于给出的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 ;
}
最新文章
- PHP静态化
- Spring 配置文件中将common.properties文件外置
- js节点属性
- UE4在Android调用Project Tango
- RHadoop教程翻译系列 _Mapreduce(1)_第一个Mapreduce任务
- ASP.NET 模板引擎 - NVelocity
- 【数学.前左上计数法】【HDU1220】Cube
- Java学习笔记-File类的基本方法
- C++学习笔记1--基础知识
- erlang在redhat上的安装
- react 16 ssr的重构踩坑
- oracle sql developer 创建数据库链接
- python之路——25
- chinalife的经验
- php 延迟静态绑定: static关键字
- 安装及使用virtualenv
- 用nodejs搭建BS环境
- python3 判断字符串是否为IP
- 记我的第一个python爬虫
- Linux服务器部署系列之一—Apache篇(上)
热门文章
- 关于Struts2的碎碎念
- 解决[warn] _default_ VirtualHost overlap on port 80, the first has precedence问题
- CCNA实验(8) -- PPP &; HDLC
- 【hadoop】14、hadoop2.5的mapreduce的 配置
- C# 动态载入Dll
- VS2015自定义注释内容
- HTML系列(一):创建HTML文档
- zoj 2966 Build The Electric System
- Oracle中的Spool缓冲池技术可以实现Oracle导出txt格式文件
- <;精华篇>;:iOS视频大全-持续更新