hdu_5768_Lucky7(中国剩余定理+容斥)
题目链接:hdu_5768_Lucky7
题意:
给你一个区间,问你这个区间内是7的倍数,并且满足%a[i]不等于w[i]的数的个数
乍一看以为是数位DP,仔细看看条件,发现要用中国剩余定理,然后容斥一下就出答案了,不过这里在中国剩余定理里面的乘法会有数据爆long long ,所有要写一个高精度乘法,这里卡死很多人、
#include <bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
typedef long long ll; ll a[],w[],l,r;
int t,n,vis[],ic=; ll mut(ll a,ll b,ll mod)//高精度求乘法
{
ll an=;
while(b){if(b&)an=(an+a)%mod;b>>=,a=(a<<)%mod;}
return an;
} ll Extended_Euclid(ll a, ll b, ll &x, ll &y)//扩展欧几里得算法
{
if(b==){x=,y=;return a;}
ll d=Extended_Euclid(b,a%b,y,x);
y-=a/b*x;
return d;
} inline ll cal(ll r,ll l,ll m){return (r-l)/m;} ll Chinese_Remainder(int len=n+)//中国剩余定理,a[]存放余数,w[]存放两两互质的数
{
ll x,y,m,N=,ret=;
F(i,,len)if(vis[i])N*=w[i];//从1开始
F(i,,len)if(vis[i])m=N/w[i],Extended_Euclid(w[i],m,x,y),
ret=(ret+mut(mut(y,m,N),a[i],N))%N;//注意是否爆ll
ret=(N+ret%N)%N;
return cal(r+N,ret,N)-cal(l-+N,ret,N);
} int main()
{
scanf("%d",&t);
w[]=,a[]=,vis[]=;
while(t--)
{
scanf("%d%lld%lld",&n,&l,&r);
F(i,,n+)scanf("%d%d",w+i,a+i);
F(i,,n+)vis[i]=;
ll ans=;
int end=<<n;
for(int i=;i<end;i++)
{
int tp=i,cnt=;
F(j,,n+)vis[j]=tp&,tp>>=,cnt+=vis[j];
cnt=cnt&?-:;
ans+=1ll*cnt*Chinese_Remainder();
}
printf("Case #%d: %lld\n",ic++,ans);
}
return ;
}
hdu_5768_Lucky7(中国剩余定理+容斥)的更多相关文章
- 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 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem D ...
- HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)
Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- HDU5768Lucky7(中国剩余定理+容斥定理)(区间个数统计)
When ?? was born, seven crows flew in and stopped beside him. In its childhood, ?? had been unfortun ...
- [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】
题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...
- bzoj 3782 上学路线 卢卡斯定理 容斥 中国剩余定理 dp
LINK:上学路线 从(0,0)走到(n,m)每次只能向上或者向右走 有K个点不能走求方案数,对P取模. \(1\leq N,M\leq 10^10 0\leq T\leq 200\) p=10000 ...
- HDU 5768Lucky7(多校第四场)容斥+中国剩余定理(扩展欧几里德求逆元的)+快速乘法
地址:http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Time Limit: 2000/1000 MS (Java/Others) M ...
- ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
随机推荐
- javascript函数作用域实践
在es6之前,JavaScript是没有块级作用域的,只有函数作用域,也就是说是一个function里面定义的变量外面取不到的:而if for是条件判断的语句,不是函数,由于缺少块级作用域,所以条件中 ...
- 微信支付服务商模式(受理机构模式)开发注意事项,jsapi支付
1.首先下载的demo,一般都是有些bug的,先要改一下. 2.微信貌似没有为服务商模式单独开发demo,下载的也都是普通商户的支付demo,其实这里没有必要单独写,因为他们区别就是几个参数的区别. ...
- C# 常用接口学习 IEnumerable<T>
作者:乌龙哈里 时间:2015-10-24 平台:Window7 64bit,Visual Studio Community 2015 本文参考: MSDN IEnumerable<T> ...
- redis12--常用API
上一篇总结我们使用我们本地的Eclipse中创建的jedis工程,链接到了我们处于VMware虚拟机上的Linux系统上的Redis服务,我们接下来讲一下jedis的一些常用的API.(1)jedis ...
- MEAN全栈开发实践
- Tomcat下log4j设置文件路径和temp目录
转自:http://www.cnblogs.com/dkblog/archive/2007/07/27/1980873.html 在Web应用中的如何设置日志文件的路径呢?最笨的方法是写绝对路径,但很 ...
- L2-001. 紧急救援
L2-001. 紧急救援 题目链接:https://www.patest.cn/contests/gplt/L2-001 Dijstra 本题是dijstra的拓展,在求最短路的同时,增加了不同的最短 ...
- Save Update saveOrUpdate delete
参考:Hibernate Session的saveOrUpdate()方法 saveOrUpdate与Update的作用 Hibernate Delete query Hibernate Basics ...
- 解决VM安装VMTools后错误提示,实现文件共享
在VM里给Red Hat 9.0安装VMTools后重启,在系统启动过程中出现三处提示,分别为:第一处:Mounting local filesystem: Error: Cannot mount f ...
- Storm 分配逻辑
ps:都是学习的别人的博客,只是做了个整理所有就写成了原创,其实都是人家的东西 当一个topology在storm cluster中运行时,它的并发主要跟3个逻辑对象相关:worker,executo ...