莫比乌斯反演/容斥原理

  Orz PoPoQQQ

  PoPoQQQ莫比乌斯函数讲义第一题。

for(i=1;i<=n;i=last+1){
  last=min(n/(n/i),m/(m/i));
  ……
}
这种写法可以O(sqrt(n))枚举所有的n/d,这个枚举除法的取值在莫比乌斯反演中非常常用。
 /**************************************************************
Problem: 2301
User: Tunix
Language: C++
Result: Accepted
Time:10964 ms
Memory:2932 kb
****************************************************************/ //BZOJ 2301
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
return v*=sign;
}
/*******************tamplate********************/
const int N=;
typedef long long LL;
int prime[N],mu[N];
bool check[N];
LL sum[N]; void getmu(int n){
memset(check,,sizeof check);
mu[]=;
int tot=;
F(i,,n){
if(!check[i]){
prime[tot++]=i;
mu[i]=-;
}
rep(j,tot){
if(i*prime[j]>n)break;
check[i*prime[j]]=;
if(i%prime[j]==){
mu[i*prime[j]]=;
break;
}
else mu[i*prime[j]]=-mu[i];
}
}
F(i,,n) sum[i]=sum[i-]+mu[i];
}
LL calc(int m,int n,int k){
int i,last;
LL re=;
n/=k; m/=k;
for(i=;i<=m && i<=n;i=last+){
last=min(n/(n/i),m/(m/i));
re+=(sum[last]-sum[i-])*(m/i)*(n/i);
}
return re;
}
int main(){
getmu(N);
int T=getint();
while(T--){
int a=getint(), b=getint(), c=getint(), d=getint(), k=getint();
printf("%lld\n", calc(b,d,k)-calc(a-,d,k)-calc(b,c-,k)+calc(a-,c-,k));
}
return ;
}

2301: [HAOI2011]Problem b

Time Limit: 50 Sec  Memory Limit: 256 MB
Submit: 1883  Solved: 808
[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

Source

[Submit][Status][Discuss]

最新文章

  1. 总结-javascript-ajax
  2. 运行基准测试hadoop集群中的问题:org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /benchmarks/TestDFSIO/io_data/test_
  3. php中的include()的使用技巧
  4. 利用Android手机里的摄像头进行拍照
  5. .NET之美——C# 中的委托和事件
  6. [置顶] 栈/入栈/出栈顺序(c语言)-linux
  7. ActiveMQ可靠性机制
  8. iOS 应用开发中的断点续传实践总结
  9. TreeView 数据绑定及选中命令处理
  10. ubuntu学习: apt-get命令
  11. Iterm2安装Zsh + Oh My Zsh+Solarized
  12. Reading task(Introduction to Algorithms. 2nd)
  13. mysql服务器主从数据库同步配置
  14. Fiddler抓包请求前设置断点
  15. js 上下滚动加停顿效果,js 跑马灯加停顿效果
  16. TYVJ1266 费解的开关
  17. 【php】下载站系统Simple Down v5.5.1 xss跨站漏洞分析
  18. AGC027 E - ABBreviate
  19. AForge.NET简介
  20. keras LSTM中间的dropout

热门文章

  1. 转载字典地址:http://blog.csdn.net/aladdinty/article/details/3591789
  2. 基于HTML5 的人脸识别活体认证
  3. 【转】在delphi中实现控件的拖拽
  4. delphi的几个特别关键字 object absolute
  5. Ztack学习笔记(6)-广播组播点播
  6. jQuery toggle方法的一个奇怪表现。
  7. [笔记]--Ubuntu安装Sublime Text 2
  8. JavaWeb之 Servlet执行过程 与 生命周期
  9. Java Collections Source Code Series 1 --- 简介
  10. 九度oj 1184 二叉树遍历