题意:求满足7的倍数,不满足其他条件num % p == a 的num的个数。

思路:利用中国剩余定理我i们可以求出7的倍数,但是多算了不满足约定条件又得减去一个,但是又发现多减了,又得加回来。如此,那么应该应用容斥原理来解决问题。那么就应该是将所有的状态都遍历一下,然后根据1的个数来判断是不是+-号。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const int maxn = ;
ll n, l, r;
ll m[maxn], a[maxn], f[maxn]; ll ex_gcd(ll a, ll b, ll &x, ll &y) {
if(!b) {
x = ;
y = ;
return a;
} else {
ll tmp = ex_gcd(b, a%b, y, x);
y -= a / b * x;
return tmp;
}
} inline ll cnt(ll k, ll m, ll x) {
return (m - k + x) / m;
} ll mul(ll a, ll b, ll m) {
ll ans = ;
while(b) {
if(b&1LL) {
ans += a;
ans %= m;
}
a <<= ;
a %= m;
b >>= ;
}
return ans;
}
ll crt(int n, ll l, ll r) {
ll M = ;
for(int i = ; i < n; i++)
if(f[i])
M *= m[i]; ll ans = ;
for(int i = ; i < n; i++)
if(f[i]) {
ll mi = M / m[i];
ll mf, tmp;
ex_gcd(mi, m[i], mf, tmp);
mf = (mf % m[i] + m[i]) % m[i]; ans += mul(mul(a[i], mi, M), mf, M);
ans = (ans % M + M) % M;
}
return cnt(ans, M, r) - cnt(ans, M, l-);
} int main() {
int T;
scanf("%d", &T);
for(int ncase = ; ncase <= T; ncase ++) {
scanf("%lld%lld%lld", &n, &l, &r);
for(int i = ; i < n; i ++) {
scanf("%lld%lld", &m[i], &a[i]);
}
ll ans = ;
m[n] =; a[n] = ; f[n] = ;
for(int i = ; i < ( << n); i ++){
int tmp = i, cn = ;
for(int j = ; j < n; j ++){
if(tmp & ) {
f[j] = ; cn ++;
}else{
f[j] = ;
}
tmp >>= ;
}
if(cn & ) ans -= crt(n + , l, r);
else ans += crt(n + , l, r);
}
printf("Case #%d: %lld\n",ncase,ans);
}
return ;
}

Lucky 7 (容斥原理 + 中国剩余定理)的更多相关文章

  1. HDU 5768 Lucky7 (容斥原理 + 中国剩余定理 + 状态压缩 + 带膜乘法)

    题意:……应该不用我说了,看起来就很容斥原理,很中国剩余定理…… 方法:因为题目中的n最大是15,使用状态压缩可以将所有的组合都举出来,然后再拆开成数组,进行中国剩余定理的运算,中国剩余定理能够求出同 ...

  2. HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)

    分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...

  3. ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)

    二进制枚举+容斥原理+中国剩余定理 #include<iostream> #include<cstring> #include<cstdio> #include&l ...

  4. 【中国剩余定理】【容斥原理】【快速乘法】【数论】HDU 5768 Lucky7

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 题目大意: T组数据,求L~R中满足:1.是7的倍数,2.对n个素数有 %pi!=ai  的数 ...

  5. HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)

    Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...

  6. [BZOJ 3129] [Sdoi2013] 方程 【容斥+组合数取模+中国剩余定理】

    题目链接:BZOJ - 3129 题目分析 使用隔板法的思想,如果没有任何限制条件,那么方案数就是 C(m - 1, n - 1). 如果有一个限制条件是 xi >= Ai ,那么我们就可以将 ...

  7. hdu 5768 Lucky7 中国剩余定理+容斥+快速乘

    Lucky7 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Problem D ...

  8. 中国剩余定理(Chinese Remainder Theorem)

    我理解的中国剩余定理的含义是:给定一个数除以一系列互素的数${p_1}, \cdots ,{p_n}$的余数,那么这个数除以这组素数之积($N = {p_1} \times  \cdots  \tim ...

  9. 51nod1079(中国剩余定理)

    题目链接: http://www.51nod.com/onlineJudge/user.html#!userId=21687 题意: 中文题诶~ 思路: 本题就是个中国剩余定理模板题,不过模拟也可以过 ...

随机推荐

  1. php7新特性总结

    PHP新功能总结 改进的性能 - 将PHPNG代码合并到PHP7中,速度是PHP 5的两倍. 降低内存消耗 - 优化的PHP 7使用较少的资源. 标量类型声明 - 现在可以强制执行参数和返回类型. 一 ...

  2. 转:SQL Server 动态行转列

    http://www.cnblogs.com/gaizai/p/3753296.html http://www.cnblogs.com/maanshancss/archive/2013/03/13/2 ...

  3. C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法

    C# WinForm窗体控件Panel修改边框颜色以及边框宽度方法 1.新建组件这里可以自定义一个Panel控件起名为PanelEx 2.增加一个BoderColor属性和BoderSize属性 pr ...

  4. thinphp5框架遇到 mkdir() Permission denied 解决办法

    网站重装 直接复制本地程序文件 里面数据库链接信息要改成线上的 然后mysql apache 等都没有动 运行后出现错误 mkdir() Permission denied 这是由于runtime目录 ...

  5. template.js artTemplate 简洁语法官网下载不了 template.js artTemplate 新下载地址

    参考:https://blog.csdn.net/tavatimsa/article/details/82019792

  6. poj 3126 Prime Path(搜索专题)

    Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20237   Accepted: 11282 Desc ...

  7. html的基本语法

  8. Python学习之旅(二十三)

    Python基础知识(22):进程和线程(Ⅰ) 1.多进程 (1)fork Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程 fork可以在Mac ...

  9. windows系统dos下查看无线网密码

    (1)采用命令:netsh wlan show profiles 查看电脑连接过的无线网: (2)采用命令:netsh wlan show profile name ="wifi 名字&qu ...

  10. MacOS High Sierra 引起 VirtualBox Vagrant 同步慢

    问题 最近把mac的操作系统升级到了最新版本发现了一个问题,通过共享文件夹的方式 修改的文件,无法立即同步到虚拟机中,大概需要30秒才能同步到共享文件夹. 操作环境如下 虚拟机:Virtualbox ...