HDU 5768 Lucky7(CRT+容斥原理)
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=5768
【题目大意】
求出一个区间内7的倍数中,对于每个ai取模不等于bi的数的个数。
【题解】
首先,对于x mod 7=0,和选取的一些x mod ai=bi,我们可以利用CRT解出最小的x值,那么这样子我们就可以对所有的aibi选取方式做容斥,得到x mod 7=0成立且所有x mod ai=bi不成立的x的个数。也就是答案。
【代码】
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL;
LL a[20],b[20],l,r;
int T,n,Cas=1,vis[20];
LL pow(LL a,LL b,LL p){LL t=1;for(a%=p;b;b>>=1LL,a=a*a%p)if(b&1LL)t=t*a%p;return t;}
LL Cal(LL r,LL l,LL m){return (r-l)/m;}
LL CRT(LL*a,LL*b,int n){
LL ans=0,P=1;
for(int i=0;i<n;i++)if(vis[i])P*=a[i];
for(int i=0;i<n;i++)if(vis[i])ans=(ans+(P/a[i])*pow(P/a[i],a[i]-2,a[i])%P*b[i]%P)%P;
while(ans<0)ans+=P;
return Cal(r+P,ans,P)-Cal(l-1+P,ans,P);
}
int main(){
scanf("%d",&T);
a[0]=7;b[0]=0;vis[0]=1;
while(T--){
scanf("%d%lld%lld",&n,&l,&r);
for(int i=1;i<=n;i++)scanf("%d%d",a+i,b+i),vis[i]=0;
LL ans=0; int all=1<<n;
for(int i=0;i<all;i++){
int U=i,cnt=0;
for(int j=1;j<=n;j++)vis[j]=U&1,U>>=1,cnt+=vis[j];
cnt=cnt&1?-1:1;
ans+=1LL*cnt*CRT(a,b,n+1);
}printf("Case #%d: %lld\n",Cas++,ans);
}return 0;
}
HDU 5768 Lucky7(CRT+容斥原理)的更多相关文章
- HDU 5768 Lucky7 (容斥原理 + 中国剩余定理 + 状态压缩 + 带膜乘法)
题意:……应该不用我说了,看起来就很容斥原理,很中国剩余定理…… 方法:因为题目中的n最大是15,使用状态压缩可以将所有的组合都举出来,然后再拆开成数组,进行中国剩余定理的运算,中国剩余定理能够求出同 ...
- 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai 的数 ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)
Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- HDU 5768 Lucky7 (中国剩余定理+容斥)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5768 给你n个同余方程组,然后给你l,r,问你l,r中有多少数%7=0且%ai != bi. 比较明显 ...
- hdu 5768 Lucky7 容斥
Lucky7 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- hdu 5768 Lucky7 中国剩余定理+容斥+快速乘
Lucky7 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- HDU 5768 - Lucky7
题意: 给出x, y, m[1...n], a[1..n]. 在[x,y]中寻找 p % 7 = 0 且对任意(1<= i <=n) p % m[i] != a[i] 的数字的个数 ...
- HDU 5768:Lucky7(中国剩余定理 + 容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Problem Description When ?? was born, seven ...
随机推荐
- Ubuntu14.04(64位)安装ATI_Radeon_R7_M265显卡驱动
电脑型号:Dell inspiron 14-5447 笔记本 显卡配置:集成显卡Intel核心显卡,Cpu是i5-4210U;独立显卡ATI_Radeon_R7_M265 网上关于ATI/Intel双 ...
- 监听enter事件
document.onkeydown=keyDownSearch; function keyDownSearch(e) { // 兼容FF和IE和Opera var theEvent = e || w ...
- javascript正则表达式/g与/i及/gi的意义
regularexpression=/pattern/[switch] 这个switch就有三种值 g: 全局匹配 i: 忽略大小写 gi: 全局匹配 + 忽略大小写 JScript 语言参考 --- ...
- Notes里OK,CANCEL按钮的设定
message并不能达到想要的目的: If Not udoc Is Nothing Then 'MessageBox "既にデータがあります.先月のデータを削除してください.& ...
- python Memo
list&tuple 运算 乘以constant >>> x = ((1,2),) >>> x*2 ((1, 2), (1, 2)) >>> ...
- mongodb or操作与连接池
mongodb # 类似于sql中的in或者or操作 mulites field query: db.cool.find({$or:[{field1:'val'},{'field2':'val'}-] ...
- Adobe Acrobat XI Pro 官方下载及安装破解
Adobe公司推出的PDF 格式是一种全新的电子文档格式.借助 Acrobat ,您几乎可以用便携式文档格式 (Portable Document Format ,简称 PDF) 出版所有的文档. P ...
- CSV 客座文章系列:KGroup 通过 Windows Azure 将 Qoob 内容管理发布到云中
编辑人员注释: 今天这篇文章由 KGroup 首席软件架构师兼研发部主管 Jody Donetti 与 KGroup 技术总监 Simone Procopio 共同撰写,介绍了 KGroup 如何使用 ...
- poj1969---找规律
题意:按照s型分别给数编号,给 #include <stdio.h> #include <stdlib.h> int main() { int n; while(scanf(& ...
- openstack 开发step-by-step
Set up your Open Stack There are several ways to deploy openstack, Devstack is easily for developer ...