2301: [HAOI2011]Problem b

Time Limit: 50 Sec  Memory Limit: 256 MB
Submit: 6015  Solved: 2741
[Submit][Status][Discuss]

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

/*
* @Author: LyuC
* @Date: 2017-10-08 16:54:59
* @Last Modified by: LyuC
* @Last Modified time: 2017-10-08 21:06:44
*/
/*
直接处理会超时,对于6/6=1 6/5=1 6/4=1这样的实际和已合并同类项一次
计算出来,能节约不少时间
*/
#include <bits/stdc++.h> #define LL long long
#define MAXN 50005
using namespace std; int t;
int a, b, c, d, k;
int sum [ MAXN ];
bool check[MAXN];
int mu[MAXN];
int prime[MAXN]; void mobi(){
memset(check,false,sizeof check);
mu[]=;
int tol=;
for(int i=;i<MAXN;i++){
if(!check[i]){
prime[tol++]=i;
mu[i]=-;
}
for(int j=;j<tol;j++){
if(i*prime[j]>MAXN) break;
check[i*prime[j]]=true;
if(i%prime[j]==){
mu[i*prime[j]]=;
break;
}else{
mu[i*prime[j]]=-mu[i];
}
}
}
} inline int Count (int a, int b) {
int s=;
if (a > b) {
swap (a, b);
}
for (int i = , last = ; i <= a; i = last + ) {
last = min( a / (a / i), b / (b / i) );
s += (sum [ last ] - sum [ i - ]) * (a / i) * (b / i);
}
return s;
} inline void init () {
sum [ ] = ;
for (int i = ;i < MAXN; i ++) {
sum [ i ] = sum[ i - ] + mu [ i ];
}
} int main () {
// freopen ("in.txt", "r", stdin);
mobi ();
init ();
scanf ("%d", &t);
while (t -- ) {
scanf ("%d%d%d%d%d", &a, &b, &c, &d, &k);
int res = Count ( b / k, d / k ) - Count ( ( a - ) / k, d / k ) - Count ( b / k, (c - ) / k ) + Count ( ( a - ) / k, ( c - ) / k );
printf ( "%d\n", res );
}
return ;
}

最新文章

  1. 第六章 第一个Linux驱动程序:统计单词个数
  2. 语义化HTML:p、h1-6、q、blockquote、hr、address、code、pre、var、cite、dfn和samp
  3. 线程安全、数据同步之 synchronized 与 Lock
  4. Metropolis Light Transport学习与实现
  5. [ Laravel 5.3 文档 ] 安全 ―― API认证(Passport)保障安全性。
  6. POJ2993——Emag eht htiw Em Pleh(字符串处理+排序)
  7. android事件分发笔记
  8. step2 uboot tag存储主要部分代码
  9. 慢查询日志 与 general_log
  10. (转)PHP ob_start() 函数介绍
  11. 从头开始-01.C语言环境测试
  12. 多线程笔记--原子操作Interlocked系列函数
  13. java对象引用传递和值传递的一些总结
  14. Java开发中的23种设计模式具体解释
  15. 使用WTL的消息反射封装CEdit实现监听控件文本改变事件
  16. 获取app崩溃信息的途径 iOS
  17. API练习_图形
  18. DP 网易内推:合唱团
  19. 【面试】足够应付面试的Spring事务源码阅读梳理(建议珍藏)
  20. c# asp.net mvc4 使用uploadify插件实现上传功能

热门文章

  1. 【框架学习与探究之定时器--Quartz.Net 】
  2. 用static声明的函数和变量小结
  3. js转换字符串为数值的方法
  4. iOS 多人共享开发证书
  5. [js高手之路] html5 canvas动画教程 - 实时获取鼠标的当前坐标
  6. 分享ES6中比较常用又强大的新特性
  7. SGU180(树状数组,逆序对,离散)
  8. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  9. 实例化vue之前赋值html元素导致事件失效
  10. 电脑本机ping通Linux虚拟机的方法