HDU 5768 中国剩余定理
题目链接:Lucky7
题意:求在l和r范围内,满足能被7整除,而且不满足任意一组,x mod p[i] = a[i]的数的个数。
思路:容斥定理+中国剩余定理+快速乘法。 (奇+ 偶-)
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std; #define LL long long
#define FOR(i, n) for (int i=0; i<n; ++i)
LL l, r; int extend_gcd(LL a, LL b, LL &x, LL &y) {
if (b == 0) {
x = 1;
y = 0;
return a;
} else {
int r = extend_gcd(b, a%b, y, x);
y -= x*(a/b);
return r;
}
} LL qMul(LL a, LL b, LL mod) {
a %= mod;
LL ret = 0;
while(b) {
if (b & 1) ret = (ret + a) % mod;
b >>= 1;
a = (a + a) % mod;
}
return ret;
} LL CRT(LL *a, LL *m, int n) {
LL M = 1;
for (int i=0; i<n; ++i) M *= m[i]; LL x = 0;
LL d, y;
for (int i=0; i<n; ++i) {
//LL d, y;
LL tm = M/m[i];
extend_gcd(m[i], tm, d, y);
x = (x + qMul( qMul(d, tm, M), a[i], M)) % M; // 参数传递有顺序
}
x = (x + M) % M;
return (r+M-x)/M - (l-1+M-x)/M; // 直接返回l r区间有多少个解。
} LL a[20], m[20];
LL chu[20], rema[20]; int main() {
freopen("1.in.cpp", "r", stdin);
int t;
scanf("%d", &t);
int cas = 0; while(t--) {
int n;
scanf("%d%lld%lld", &n, &l, &r);
FOR(i, n) {
scanf("%lld%lld", &chu[i], &rema[i]);
}
LL tot = (1<<n);
LL ans = r/7 - (l-1)/7; for (int i=1; i<tot; ++i) {
//cout << i << "++++\n";
int cnt = 0;
FOR (j, n) {
if (i&(1<<j)) {
m[cnt] = chu[j];
a[cnt] = rema[j];
cnt++;
}
}
m[cnt] = 7, a[cnt] = 0;
cnt++;
LL tans = CRT(a, m, cnt);
cnt = (cnt&1) ? 1 : -1;
ans += tans * cnt;
}
//cout << "++++\n";
printf("Case #%d: %I64d\n", ++cas, ans);
}
return 0;
}
HDU 5768 中国剩余定理的更多相关文章
- hdu 2891 中国剩余定理
从6点看到10点,硬是没算出来,早知道玩游戏去了,艹,明天继续看 不爽,起来再看,终于算是弄懂了,以后超过一个小时的题不会再看了,不是题目看不懂,是水平不够 #include<cstdio> ...
- hdu 3579 Hello Kiki 不互质的中国剩余定理
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- 《孙子算经》之"物不知数"题:中国剩余定理
1.<孙子算经>之"物不知数"题 今有物不知其数,三三数之剩二,五五数之剩七,七七数之剩二,问物几何? 2.中国剩余定理 定义: 设 a,b,m 都是整数. 如果 m ...
- POJ 1006 中国剩余定理
#include <cstdio> int main() { // freopen("in.txt","r",stdin); ; while(sca ...
- [TCO 2012 Round 3A Level3] CowsMooing (数论,中国剩余定理,同余方程)
题目:http://community.topcoder.com/stat?c=problem_statement&pm=12083 这道题还是挺耐想的(至少对我来说是这样).开始时我只会60 ...
- poj1006中国剩余定理
Biorhythms Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 103506 Accepted: 31995 Des ...
- (伪)再扩展中国剩余定理(洛谷P4774 [NOI2018]屠龙勇士)(中国剩余定理,扩展欧几里德,multiset)
前言 我们熟知的中国剩余定理,在使用条件上其实是很苛刻的,要求模线性方程组\(x\equiv c(\mod m)\)的模数两两互质. 于是就有了扩展中国剩余定理,其实现方法大概是通过扩展欧几里德把两个 ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
- 洛谷P3868 [TJOI2009]猜数字(中国剩余定理,扩展欧几里德)
洛谷题目传送门 90分WA第二个点的看过来! 简要介绍一下中国剩余定理 中国剩余定理,就是用来求解这样的问题: 假定以下出现数都是自然数,对于一个线性同余方程组(其中\(\forall i,j\in[ ...
随机推荐
- iOS - Notification 通知
1.Notification 通知中心实际上是在程序内部提供了消息广播的一种机制,它允许我们在低程度耦合的情况下,满足控制器与一个任意的对象进行通信的目的.每一个 iOS 程序(即每一个进程)都有一个 ...
- STRUTS2 标签 循环次数
*<s:property value="menus.size()"/> * <s:if test='menus.size()>8'> sssss ...
- js输出26个字母两种方法(js fromCharCode的使用)
方法一 var character = new Array("A","B","C","D","E", ...
- mysql 选择性高
选择性高是指能够过滤掉更多不需要的记录.举例来说,在一个公司里,使用性别只能过滤掉一半的人,而使用姓名一般可以过滤掉99%以上的人,因为会有重名情况,而使用员工号,选出一个,其他的全部过滤掉.也就是说 ...
- hdu 5340 Three Palindromes
前几晚 BC 的第二题,官方给出的题解是: 然后我结合昨天刚看的 Manacher 算法试着写了下,发现 pre.suf 数组挺难构造的,调试了好久,然后就对中间进行枚举了,复杂度应该是 O(n2) ...
- mysql连接字符串
MySQL中 concat 函数使用方法:CONCAT(str1,str2,…)
- 20160808_卸载OpenJDK
1.查看信息 [root@localhost ~]# rpm -qa | grep jdkjava-1.6.0-openjdk-devel-1.6.0.0-1.50.1.11.5.el6_3.x86_ ...
- SQL 比较时间大小
比较字符串类型的时间大小 数据库中的时间是varchar类型的,MySql使用CURDATE()来获取当前日期,SqlServer通过GETDATE()来获取当前日期 1. 直接使用字符串来比较 注意 ...
- iOS开发 判断扫码是否为有效网址
- (BOOL)achiveStringWithWeb:(NSString *)infor { NSString *emailRegex = @"[a-zA-z]+://.*"; ...
- Deep Learning in Bioinformatics
最近在学tensorflow,深度学习的开源工具,很好奇在生信领域深度学习都能做些什么东西. 镇楼的综述:Deep Learning in Bioinformatics 几篇文章读读看: Deep l ...