HDU 1573 X问题 中国剩余定理
链接: pid=1573">http://acm.hdu.edu.cn/showproblem.php? pid=1573
题意:求在小于等于N的正整数中有多少个X满足:X mod a[0] = b[0], X mod a[1] = b[1], X mod a[2] = b[2], …, X mod a[i] = b[i], … (0 < a[i] <= 10)。
思路:中国剩余定理的模板题(全部除数相互不互质版),假设找不到这种数或者最小的X大于N。输出零。
资料:http://yzmduncan.iteye.com/blog/1323599/
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <cstdlib>
#include <queue>
#include <stack>
#include <vector>
#include <ctype.h>
#include <algorithm>
#include <string>
#include <set>
#define PI acos(-1.0)
#define maxn 10005
#define INF 0x7fffffff
#define eps 1e-8
typedef long long LL;
typedef unsigned long long ULL;
using namespace std;
LL MOD;
LL extend_gcd(LL a, LL b, LL &x, LL &y)
{
if(b==0)
{
x=1;
y=0;
return a;
}
LL r=extend_gcd(b,a%b,x,y);
LL t=x;
x=y;
y=t-a/b*y;
return r;
}
LL inv(LL a,LL m)
{
LL d,x,y;
d=extend_gcd(a,m,x,y);
if (d==1)
{
x=(x%m+m)%m;
return x;
}
else return -1;
}
LL gcd(LL a,LL b)
{
return b==0?a:gcd(b,a%b);
}
bool merge(LL a1,LL m1,LL a2,LL m2,LL &a3,LL &m3)
{
LL d=gcd(m1,m2);
LL c=a2-a1;
if(c%d)
return false;
c=(c%m2+m2)%m2;
c/=d;
m1/=d;
m2/=d;
c*=inv(m1,m2);
c%=m2;
c*=m1*d;
c+=a1;
m3=m1*m2*d;
a3=(c%m3+m3)%m3;
return true;
}
LL CRT_next(LL a[],LL m[],int n)
{
LL a1=a[0],m1=m[0],a2,m2;
for(int i=1;i<n;i++)
{
LL aa,mm;
a2=a[i],m2=m[i];
if(!merge(a1,m1,a2,m2,aa,mm))
return -1;
a1=aa;
m1=mm;
}
MOD=m1;
LL aa=(a1%m1+m1)%m1;
if(aa==0)
aa+=m1;
return aa;
}
int main()
{
int T;
LL a[55],b[55];
scanf("%d",&T);
for(int ii=1; ii<=T; ii++)
{
int tot;
LL t1;
scanf("%I64d%d",&t1,&tot);
for(int i=0; i<tot; i++)
scanf("%I64d",&a[i]);
for(int i=0; i<tot; i++)
scanf("%I64d",&b[i]);
if(tot==1)
{
if(b[0]==0)
b[0]+=a[0];
if(t1<b[0])
printf("0\n");
else
printf("%I64d\n",(t1-b[0])/a[0]+1);
}
else
{
LL ans=CRT_next(b,a,tot);
if(ans==-1)
printf("0\n");
else if(ans>t1)
printf("0\n");
else
printf("%I64d\n",(t1-ans)/MOD+1);
}
}
return 0;
}
HDU 1573 X问题 中国剩余定理的更多相关文章
- hdu X问题 (中国剩余定理不互质)
http://acm.hdu.edu.cn/showproblem.php?pid=1573 X问题 Time Limit: 1000/1000 MS (Java/Others) Memory ...
- HDU 5768 Lucky7 (中国剩余定理 + 容斥 + 快速乘法)
Lucky7 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768 Description When ?? was born, seven crow ...
- HDU 5768 Lucky7 容斥原理+中国剩余定理(互质)
分析: 因为满足任意一组pi和ai,即可使一个“幸运数”被“污染”,我们可以想到通过容斥来处理这个问题.当我们选定了一系列pi和ai后,题意转化为求[x,y]中被7整除余0,且被这一系列pi除余ai的 ...
- hdu 5446 Unknown Treasure 中国剩余定理+lucas
题目链接 求C(n, m)%p的值, n, m<=1e18, p = p1*p2*...pk. pi是质数. 先求出C(n, m)%pi的值, 然后这就是一个同余的式子. 用中国剩余定理求解. ...
- HDU 3579 Hello Kiki 中国剩余定理(合并方程
题意: 给定方程 res % 14 = 5 res % 57 = 56 求res 中国剩余定理裸题 #include<stdio.h> #include<string.h> # ...
- hdu 3579 Hello Kiki (中国剩余定理)
Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- POJ 2891 Strange Way to Express Integers 中国剩余定理解法
一种不断迭代,求新的求余方程的方法运用中国剩余定理. 总的来说,假设对方程操作.和这个定理的数学思想运用的不多的话.是非常困难的. 參照了这个博客的程序写的: http://scturtle.is-p ...
- HDU 1573 X问题(中国剩余定理标准解法)
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- 中国剩余定理 hdu 1573 X问题
HDU 1573 X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- hdu 1573 X问题【扩展中国剩余定理】
扩展中国剩余定理的板子,合并完之后算一下范围内能取几个值即可(记得去掉0) #include<iostream> #include<cstdio> #include<cm ...
随机推荐
- C#)Windows Shell 编程系列5 - 获取图标
原文 C#)Windows Shell 编程系列5 - 获取图标 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) 接上一节:(C#)Windows Shell 编程系列4 - 上下 ...
- Nginx 的 Echo 模块 —— echo-nginx-module(转)
Nginx 有个 echo 模块可以用来输出一些简单的信息,例如: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2 ...
- Mac 让 iTerm2 记住用户名密码 expect 脚本
刚刚用iTerm2的时候,总是要一遍遍的敲用户名.密码. 我在想, 能不能像Windows的软件一样,可以直接让软件记住.然后只要点击一下,就直接ssh到远程服务器上面去了. 之后经过搜索,可以用ex ...
- zookeeper leader作用
一个zookeeper 集群 只有一个leader: 类似master/slave模式 客户端提交请求之后,先发送到leader,leader作为接收者,广播到每个server 在folloer上创建 ...
- Java编程思想重点笔记
首先声明转自https://github.com/lanxuezaipiao/ReadingNotes 无意中发现,写的蛮好转过来学习下. 1. Java中的多态性理解(注意与C++区分) Java中 ...
- Flex的学习资源
学习网站 http://www.adobe.com/cn/devnet/flex.html Adobe Flex开发人员中心 http://www.adobe.com/cn/devnet/flex/v ...
- python下yield(生成器)
python下的协程: #encoding=utf-8 """ 协程----微小的进程 yield生成器-----生成一个可迭代对象比如list, tuple,dir 1 ...
- 「Foundation」集合
一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组 ...
- jQuery $.fn.extend方式自定义插件
之前例子是扩展jQuery的工具方法,即通过$.xxx(para);的形式来使用的.下面是扩展jquery对象的方法,即任意一个jquery对象都已访问. 具体如下: wyl.js: (functio ...
- web测试 结果存储类型为“Database”,但尚未指定结果储存库连接字符串
vs2010 Ultimate版带有web测试功能,可以对网站的性能以及负载进行测试. 在进行负载测试时提示“异常 LoadTestConnectStringMissingException 1 Lo ...