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

题解:这道题其实和之前那道hdu1695很像,反演之后的大函数很好推

根据容斥原理,答案应该为

其中前一个数为i的上界,后一个数为j的上界

但是我们发现这是O(n^2)的,还是会TLE

这个时候要用一个看着非常dark的方法来优化

这玩意被称之为

分块!

分块!!

分块!!!

其实是假的了

因为我们观察之前的代码:

我们会发现在i极其接近b的时候

在很长的一大段中b/i和d/i都是不变的

所以我们完全可以先处理出莫比乌斯函数的前缀和,然后用前缀和乘上这整个大小不变的块的值即可

代码如下:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define hi puts("hi");
using namespace std; int vis[],p[],mu[],sum[],cnt,n,a,b,c,d,k;; void get()
{
memset(vis,,sizeof(vis));
cnt=;
mu[]=;
vis[]=;
for(int i=;i<=;i++)
{
if(!vis[i])
{
p[cnt++]=i;
mu[i]=-;
}
for(int j=;j<cnt;j++)
{
if(p[j]*i>)
{
break;
}
vis[i*p[j]]=;
if(!(i%p[j]))
{
mu[i*p[j]]=;
break;
}
else
{
mu[i*p[j]]=-mu[i];
}
}
}
} long long solve(int x,int y)
{
long long last=;
x/=k;
y/=k;
long long ans=;
if(x>y)
{
swap(x,y);
}
for(int i=;i<=x;i=last+)
{
last=min(x/(x/i),y/(y/i));
ans+=(long long)(sum[last]-sum[i-])*(y/i)*(x/i);
}
return ans;
} int main()
{
get();
for(int i=;i<=;i++)
{
sum[i]=sum[i-]+mu[i];
}
scanf("%d",&n);
while(n--)
{
scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
long long ans=solve(b,d)+solve(a-,c-)-solve(a-,d)-solve(c-,b);
printf("%lld\n",ans);
}
}

BZOJ 2301 Problem b(莫比乌斯反演+分块优化)的更多相关文章

  1. [bzoj2301]Problem b莫比乌斯反演+分块优化

    题意: $\sum\limits_{\begin{array}{*{20}{c}}{a < = x < = b}\\{c < = y < = d}\end{array}} {\ ...

  2. BZOJ 2301 Problem B(莫比乌斯反演)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2301 题意:给a,b,c,d,k,求gcd(x,y)==k的个数(a<=x<=b,c&l ...

  3. BZOJ 2301 Problem b (莫比乌斯反演+容斥)

    这道题和 HDU-1695不同的是,a,c不一定是1了.还是莫比乌斯的套路,加上容斥求结果. 设\(F(n,m,k)\)为满足\(gcd(i,j)=k(1\leq i\leq n,1\leq j\le ...

  4. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=37166 题意:对于给出的n个询问,每次求有多少个数对(x,y),满 ...

  5. bzoj 2301 [HAOI2011]Problem b(莫比乌斯反演+分块优化)

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

  6. [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明)

    [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求\(\sum _{i=a}^b\sum _{j=c}^d[ ...

  7. 【莫比乌斯反演】关于Mobius反演与gcd的一些关系与问题简化(bzoj 2301 Problem b&&bzoj 2820 YY的GCD&&BZOJ 3529 数表)

    首先我们来看一道题  BZOJ 2301 Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd( ...

  8. Bzoj 2301: [HAOI2011]Problem b(莫比乌斯反演+除法分块)

    2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Description 对于给出的n个询问,每次求有多少个数对(x, ...

  9. [HAOI2011][bzoj2301] Problem b [莫比乌斯反演+容斥原理+分块前缀和优化]

    题面: 传送门 有洛谷就尽量放洛谷链接呗,界面友好一点 思路: 和HDU1695比较像,但是这一回有50000组数据,直接莫比乌斯反演慢慢加的话会T 先解决一个前置问题:怎么处理a,c不是1的情况? ...

随机推荐

  1. Oracle中遇到的错误

    1. ORA-00937: 不是单组分组函数  和  不是group by表达式 --select count(corp_tn),state_code from t_oa_main where cor ...

  2. Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)

    模块介绍 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻 ...

  3. Oracle日常性能问题查看

    1 判断回滚段竞争的sql --当Ratio大于2时存在回滚段竞争,需要增加更多的回滚段) ratio from v$rollstat rs, v$rollname rn where rs.USN = ...

  4. JCE无限制权限策略文件

    JCE无限制权限策略文件,里面是对应jdk6和jdk7的文件 官网下载地址是 JDK6:http://www.oracle.com/technetwork/java/javase/downloads/ ...

  5. 0003-程序流程1之app.js

    index.html中引入各种依赖的文件 由ng-app处开始angular Js的管理 angular.module('App', ['']) .run(function($rootScope,.. ...

  6. python's seventh day for me set

    数据类型的补充: 对于元祖:  如果只有一个元素,并且没有逗号,此元素是什么数据类型,该表达式就是什么数据类型. tu = ('顾清秋') tul = ('顾清秋',) print(type(tu)) ...

  7. 解决webpack环境变量NODE_ENV跨平台兼容性问题

    为什么要用cross-env插件 学过webpack的人都知道,webpack可以使用NODE_ENV=development或者NODE_ENV=production这样的方式来设置全局变量 这样的 ...

  8. 第六章 MySQL函数(待续)

    ············

  9. Python特殊语法:filter、map、reduce、lambda

    filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决 ...

  10. CSS——优先级

    转自:http://www.planabc.net/2008/05/06/css_specificity/ CSS2.1 中规定了关于 CSS 规则 Specificity(特异性)的计算方式,用一个 ...