ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
二进制枚举+容斥原理+中国剩余定理
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std; #define MAXN 20
typedef long long LL; int n;
int s[MAXN];
LL a[MAXN], m[MAXN]; //a是余数,m是除数 LL extented_gcd(LL a,LL b, LL &x, LL &y) //扩展欧几里得
{
if(a == 0 && b == 0) return -1;
if(b == 0){
x = 1; y = 0; return a;
}
LL d = extented_gcd(b, a%b, y, x);
y -= a/b*x;
return d;
} LL mult(LL a, LL k, LL m){ //快速乘法
LL res = 0;
while(k){
if(k & 1LL) res = (res + a) % m;
k >>= 1;
a = (a << 1) % m;
}
return res;
} //x = ai(mod mi) mi之间互素
//M = m1 * m2 * ... * mi
//Mi'*Mi = 1 (mod mi) Mi = M/mi
//x = sigma(ai * Mi * M') % M
LL CRT(LL l, LL r) //中国剩余定理
{
LL M = 1, ans = 0;
for (int i = 0; i <= n; ++i)
if(s[i]) M *= m[i];
for(int i = 0;i <= n;i++)
{
if(s[i]){
LL Mi = M/m[i];
LL x,y;
extented_gcd(Mi, m[i], x,y); //求Mi*x=1(mod m[i])
x = (x%m[i] + m[i]) % m[i];
ans = (ans+mult(a[i]*Mi % M, x, M)) % M; //计算最小解
}
}
return (r+M-ans)/M - (l-1+M-ans)/M; //计算[l,r]间解的个数
} int main()
{
//freopen("in", "r", stdin);
int T, cas = 0;
scanf("%d", &T);
while(T--){
LL l, r;
scanf("%d%lld%lld", &n, &l, &r);
memset(s, 0, sizeof(s));
m[n] = 7; a[n] = 0; s[n] = 1;
for(int i = 0;i < n;i++)
scanf("%lld%lld", &m[i], &a[i]);
LL ans = 0;
int all = 1 << n;
for(int i = 0;i < all;i++){ //二进制枚举同余方程
int t = i, k = 0;
for(int j = 0;j < n;j++){
s[j] = t & 1;
t >>= 1;
k += s[j]; //计算同余方程个数
}
k = k & 1 ? -1 : 1;//容斥定理-奇减偶加
ans += 1LL * k * CRT(l, r);
}
printf("Case #%d: %lld\n", ++cas, ans);
}
return 0;
}
ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)的更多相关文章
- HDU 5768:Lucky7(中国剩余定理 + 容斥原理)
http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Problem Description When ?? was born, seven ...
- Hdu 5446 Unknown Treasure (2015 ACM/ICPC Asia Regional Changchun Online Lucas定理 + 中国剩余定理)
题目链接: Hdu 5446 Unknown Treasure 题目描述: 就是有n个苹果,要选出来m个,问有多少种选法?还有k个素数,p1,p2,p3,...pk,结果对lcm(p1,p2,p3.. ...
- 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai 的数 ...
- HDU 5768 Lucky7 (容斥原理 + 中国剩余定理 + 状态压缩 + 带膜乘法)
题意:……应该不用我说了,看起来就很容斥原理,很中国剩余定理…… 方法:因为题目中的n最大是15,使用状态压缩可以将所有的组合都举出来,然后再拆开成数组,进行中国剩余定理的运算,中国剩余定理能够求出同 ...
- Lucky 7 (容斥原理 + 中国剩余定理)
题意:求满足7的倍数,不满足其他条件num % p == a 的num的个数. 思路:利用中国剩余定理我i们可以求出7的倍数,但是多算了不满足约定条件又得减去一个,但是又发现多减了,又得加回来.如此, ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- HDU 5446 中国剩余定理+lucas
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- 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. 比较明显 ...
随机推荐
- ECharts学习(4)--仪表盘
1. ECharts中的仪表盘,要使用这个图表时把series中的type属性修改成'gauge',然后在detail中设置仪表盘详情,用于显示数据.最常用的是formatter(格式化函数或者字符串 ...
- [转]extjs grid的Ext.grid.CheckboxSelectionModel默认选中解决方法
原文地址:http://379548695.iteye.com/blog/1167234 grid的复选框定义如下: var sm = new Ext.grid.CheckboxSelection ...
- 【URAL 1519】Formula 1
http://acm.timus.ru/problem.aspx?space=1&num=1519 调了好久啊.参考(抄)的iwtwiioi的题解. 如果想要题解,题解在<基于连通性状态 ...
- Uncaught SyntaxError: Invalid or unexpected token
出现错误的地方:在Jquery中,调用有参数的方法,动态传递参数时报错 出现错误的原因: 动态传递参数的时候,参数中有换行符 错误的解决:参数传递之前,将换行符替换 var temp = model ...
- C#做有模和非模式化窗体 传值例程
有模窗体:指的是一定要在第二个窗体上操作之后 才能去操作前者窗体 :例如,如果一个对话框,在可以切换到其它窗体或对话框之前要求先单击"确定"或"取消",则它就是 ...
- 偷懒小工具 - Excel导出公共类
说明 最近接了一个任务,就是做一个列表的Excel导出功能.并且有很多页面都会使用这个功能. 导出的Excel大体格式如图 很简单的列表,标题加背景色,然后不同类型,显示方式不一样.对齐方式不一样.不 ...
- Struts2深入学习:OGNL表达式原理
今天看了ognl表达式,不是很理解,准备以后再回头复习: http://developer.51cto.com/art/201203/322509.htm#case1
- sql server中对xml进行操作
一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...
- Windows10配置NFS服务端和客户端
环境:Windows10企业版x64 安装服务端 安装hane win nfs server,版本1169(官方最新版1223经试验不成功). 设置如下: 以管理员身份重启服务(注:软件界面上&quo ...
- webstorm卡顿问题
近期随着项目开展,文件逐渐增大,webstrom频繁出现卡顿,而且时有崩溃现象,提示没有足够的内存来执行请求的操作,需要增加Xms设置. 解决办法: 1.找到WebStorm.exe.vmoption ...