题意:

    给出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. UINavigationController 导航控制器

    一.导航视图控制器 1.管理视图控制器 2.控制视图控制器之间的跳转 3.是以压栈和出栈的形式来管理视图控制器 4.导航视图控制器必须要设置根视图控制器 5.导航是视图控制器包含UINavigatio ...

  2. linux android ndk

    Android调用so库, so库是c语言编写, 在linux 64位系统+ndk(32位)生成 lib*.so (32位) 1. 所需软件环境: 1)so库开发环境 操作系统: Redhat Ser ...

  3. GitHub+hexo to Blog

    title: GitHub+hexo to Blog date: 2014-12-26 09:44:53 tags: hexo, github --- 摘要 一直想要一个自己的博客,不过一直怯于对网站 ...

  4. 多加注意对null和“”的处理

    程序中对一些需要再次取值的引用类型参数,在引用之前,请千万注意对空的判断.当不清晰返回结果是null还是""时,应先判断null,再判断空字符串. LOFTER:我们的故事   h ...

  5. SSE2 Intrinsics各函数介绍[转]

    SIMD相关头文件包括: //#include <ivec.h>//MMX //#include <fvec.h>//SSE(also include ivec.h) //#i ...

  6. $_FILES系统函数

    PHP编程语言中的常见的$_FILES系统函数用法有: $_FILES['myFile']['name'] 显示客户端文件的原名称. $_FILES['myFile']['type'] 文件的 MIM ...

  7. information_schema.routines 学习

    information_schema.routines 用户查看mysql中的routine信息 1.information_schema.routines 表中的常用列: 1.

  8. 在Git中一定要关注的crlf自动转换

    GitHub 第一坑:换行符自动转换 如果你已经做出了错误的选择,也不需要重新安装,可以直接使用命令行来修改设置.很简单,直接打开这货自带的命令行工具 Git Bash,输入以下命令,再敲回车即可: ...

  9. JS函数的属性

    1.arguments.callee //经典的阶乘(递归)函数 function factorial(num) { if (num <= 1) { return 1; } else { ret ...

  10. WPF笔记(2.5 Canvas)——Layout

    原文:WPF笔记(2.5 Canvas)--Layout Canvas是最精确的布局容器--绝对定位,此书作者不建议使用,以为控件的大小一般会随着内部字体图片的动态生成而自动变化,所以使用前三种布局是 ...