题意:

    给出x, y, m[1...n], a[1..n].
      

    在[x,y]中寻找 p % 7 = 0 且对任意(1<= i <=n) p % m[i] != a[i] 的数字的个数
    
分析:

    可用容斥定理,先在[x,y]找出所有7的倍数,再根据多个模线性方程连立,去掉所有不合法的
      

    因 m[1...n] 互质,故可直接使用中国剩余定理.

    并且需要在其中用 快速加法 防止超 long long

 #include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
#define LL long long
const int MAXN = ;
LL ExtGcd(LL a,LL b,LL &x,LL &y)
{
if (b == ) {x = ; y = ; return a;}
LL d = ExtGcd(b, a%b, y, x);
y -= a / b * x;
return d;
}
LL Mul(LL a,LL b,LL MOD)
{
a%=MOD; b%=MOD;
LL res = ;
while(b)
{
if (b&) res = (res + a) % MOD;
a <<= ; if(a > MOD) a-=MOD;
b >>= ;
}
return res;
}
void CRT(LL &ans,LL &M, LL a[],LL m[],int k) //X = a[i] ( mod m[i] )(m[i]两两互质)
{ //解为 X = ans + M * t (0 <= ans <= M)
M = , ans = ;
LL x, y, Mi;
for (int i = ; i < k; i++) M *= m[i];
for (int i = ; i < k; i++)
{
Mi = M / m[i];
ExtGcd(m[i], Mi, x, y);
ans = (ans + Mul( Mul(y, Mi, M), a[i], M)) % M;
}
if(ans < ) ans += M;
}
int t, n;
LL x, y;
LL m1[MAXN], a1[MAXN], m[MAXN], a[MAXN];
LL Cal(LL m,LL a)
{
LL x0 = x + m - a;
LL y0 = y + m - a;
return y0 / m - (x0 - ) / m;//计算[x,y]中有多少p % m = a
}
int main()
{
scanf("%d", &t);
for(int tt = ; tt <= t; tt++)
{
scanf("%d%lld%lld", &n, &x, &y);
for(int i = ; i < n ; i++)
scanf("%lld%lld", &m1[i], &a1[i]);
int cnt = ;
LL ans = Cal(,);//找出所有7的倍数
for (int i = ; i < (<<n); i++)//枚举
{
cnt = ;
for (int j = ; j < n; j++)
{
if (i & (<<j))
{
m[cnt] = m1[j];
a[cnt] = a1[j];
++cnt;
}
}
m[cnt] = ;
a[cnt] = ;
++cnt;
LL M,A;
CRT(A, M, a, m, cnt);
if (cnt%) ans += Cal(M, A);//加奇数个,减偶数个
else ans -= Cal(M, A);
}
printf("Case #%d: %lld\n",tt,ans);
}
}

HDU 5768 - Lucky7的更多相关文章

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

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

  2. hdu 5768 Lucky7 容斥

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

  3. HDU 5768 Lucky7 (中国剩余定理+容斥)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5768 给你n个同余方程组,然后给你l,r,问你l,r中有多少数%7=0且%ai != bi. 比较明显 ...

  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(CRT+容斥原理)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5768 [题目大意] 求出一个区间内7的倍数中,对于每个ai取模不等于bi的数的个数. [题解] 首 ...

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

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

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

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

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

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

  9. HDU 5768:Lucky7(中国剩余定理 + 容斥原理)

    http://acm.hdu.edu.cn/showproblem.php?pid=5768 Lucky7 Problem Description   When ?? was born, seven ...

随机推荐

  1. C++11新特性

    c++语言的扩展和修正,不仅包含了核心语言的新机能,而且扩展了c++标准库(STL),并引入了大部分的C++ technical report 1程序库 C++11还包括大量新特性:包括lambda表 ...

  2. php 实现同一个账号同时只能一个人登录

    php 实现同一个账号同时只能一个人登录 张映 发表于 2015-01-22 分类目录: php 标签:mysql, nginx, openfire, php, redis 以前考虑过这个问题,今天实 ...

  3. github orgmode

    http://blog.nicky1605.com/application-github-page.html http://dayigu.github.io/WhyUseOrgModeToWriteB ...

  4. 35+雪花Logos设计灵感

    快中秋节放假了,给大家分享一些雪花Logos设计灵感,陶冶下心情吧! 原文地址:http://www.goodfav.com/35-snowflake-logos-ideas-17134.html V ...

  5. 剑指offer-面试题13.在O(1)时间删除链表节点

    题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点. 链表节点与函数的定义如下. 通常我们删除某个节点都是从头开始遍历到需要删除节点的前一个节点. 然后使得该节点的next ...

  6. 剑指offer-面试题4.替换空格

    题目:请实现一个函数,把字符串中的每个空格都替换成"%20".例如输入"We are happy." 则输出"We%20are%20happy.&qu ...

  7. 武道释义 &#183; 零散

    若是你防御你的左边.你的右边必定是弱点: 若是你防御你的前面,你的后面必定是弱点. 若是你处处小心防御,则必定处处都是弱点." 有些武术尽管先声夺人.但却如喝渗水之酒,令人越瞧越觉无味: 但 ...

  8. u3d shader使用

    先建立一个材质球Material 选择shader 把材质球Material 赋给图片

  9. 王立平-Android中对图像进行Base64编码

    // ------------------base64-------------------// public String bitmaptoString(Bitmap bitmap) { // 将B ...

  10. Javascript中正则表达式的全局匹配模式

    先看一道JavaScript题目,据说是国内某知名互联网企业的JavaScript笔试题,如果对正则的全局匹配模式不了解的话可能会对下面的输出结果感到疑惑. var str = "123#a ...