<题目链接>

X问题

Problem Description
求在小于等于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)。
 
Input
输入数据的第一行为一个正整数T,表示有T组测试数据。每组测试数据的第一行为两个正整数N,M (0 < N <= 1000,000,000 , 0 < M <= 10),表示X小于等于N,数组a和b中各有M个元素。接下来两行,每行各有M个正整数,分别为a和b中的元素。
 
Output
对应每一组输入,在独立一行中输出一个正整数,表示满足条件的X的个数。
 
Sample Input
3
10 3
1 2 3
0 1 2
100 7
3 4 5 6 7 8 9
1 2 3 4 5 6 7
10000 10
1 2 3 4 5 6 7 8 9 10
0 1 2 3 4 5 6 7 8 9
 
Sample Output
1
0
3
 
解题分析:
看到题目的描述很容易想到中国剩余定理。利用模板求出最小解,如果最小解大于n或者无最小解(此模板返回-1),则无解否则输出(n-ans)/dg+1(dg为a[i]的最小公倍数,ans为最小解)(根据ans+num*dg<=n推出的),所有满足dg*i+ans的都符合要求,ans为最小的满足的数。 需要注意的是,由于题目没有说除数是互质的,所以不能用普通的中国剩余定理的模板。

#include<stdio.h>
using namespace std;
#define ll long long ll A[],B[];//B[i]为余数
ll dg,ans;//dg为A[i]的最小公倍数 ans 为最小解
void exgcd(ll a, ll b, ll &d, ll&x, ll &y)
{
if (!b) {d=a; x=; y=;}
else
{
exgcd(b, a%b, d, y, x);
y-=x*(a/b);
}
} ll gcd(ll a, ll b)
{
if (!b) return a;
else gcd(b, a%b);
}
ll china(ll n)
{
ll a,b,d,x,y,dm;
ll c,c1,c2;
a=A[]; c1=B[];
for (int i=; i<n; i++)
{
b=A[i]; c2=B[i];
exgcd(a, b, d, x, y);
dm=b/d;
c=c2-c1;
if (c%d) return -;
x=((x*c/d)%dm+dm)%dm;//x可能为负
c1=a*x+c1;
a=a*b/d;
} //求最小公倍数
dg=a;//dg是最大公约数
if (!c1)//考虑c1为0的情况
{
c1=;
for (int i=; i<n; i++)
{
c1=c1*A[i]/gcd(c1, A[i]);
}
dg=c1;//此时dg为最小公倍数
}
return c1;//c1为最小的X
} int main(){
int t;
scanf("%d",&t);
while(t--){
int n,m;
scanf("%d%d",&n,&m); for(int i=;i<m;i++)
scanf("%lld",&A[i]);
for(int i=;i<m;i++)
scanf("%lld",&B[i]);
ans=china(m); //利用模板找到满足条件的最小值
if(ans==-||ans>n)
printf("0\n");
else printf("%d\n",(n-ans)/dg+);
}
return ;
}
 
 
 
2018-07-31

hdu1573 X问题【中国剩余定理】的更多相关文章

  1. X问题(中国剩余定理+不互质版应用)hdu1573

    X问题 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  2. exgcd&&中国剩余定理专题练习

    hdu1573求中国剩余定理解的个数 #include <iostream> #include <cstdio> using namespace std; int a[100] ...

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

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

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

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

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

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

  6. HDU 5446 中国剩余定理+lucas

    Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  7. poj1006生理周期(中国剩余定理)

    /* 中国剩余定理可以描述为: 若某数x分别被d1..….dn除得的余数为r1.r2.….rn,则可表示为下式: x=R1r1+R2r2+…+Rnrn+RD 其中R1是d2.d3.….dn的公倍数,而 ...

  8. poj 1006:Biorhythms(水题,经典题,中国剩余定理)

    Biorhythms Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 110991   Accepted: 34541 Des ...

  9. UVA 11754 (暴力+中国剩余定理)

    题目链接: http://www.bnuoj.com/v3/problem_show.php?pid=20172 题目大意:有C个模方程,每个方程可能有k余数,求最小的S个解. 解题思路: 看见模方程 ...

随机推荐

  1. Nginx实战之让用户通过用户名密码认证访问web站点

    1.Nginx实战之让用户通过用户名密码认证访问web站点 [root@master ~]# vim /usr/local/nginx/conf/extra/www.conf server { lis ...

  2. GET和POST有什么区别?及为什么网上多数答案都是错的(转载)

    这仅仅是我认为比较好的关于get和post区别的解答,然后把作者的一些文字踢除留下比较干的部分. 作者:南柯之石链接:http://www.cnblogs.com/nankezhishi/archiv ...

  3. Activity生命周期函数、onSaveInstanceState()和onRestoreInstanceState()的介绍

    http://www.cnblogs.com/tianzhijiexian/p/3885472.html

  4. java 多线程和并行程序设计

    多线程使得程序中的多个任务可以同时执行 在一个程序中允许同时运行多个任务.在许多程序设计语言中,多线程都是通过调用依赖系统的过程或函数来实现的 为什么需要多线程?多个线程如何在单处理器系统中同时运行? ...

  5. SpringMVC 使用@ResponseBody返回json 中文乱码与返回实体类报错

    有时候我们发现接收的是中文,返回却是个?.这确实是个蛋疼的问题,Spring中解析字符串的转换器默认编码居然是ISO-8859-1 /** * Implementation of {@link Htt ...

  6. Dubbo服务降级

    当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或简单处理,从而释放服务器资源以保证核心业务正常运作或高效运作. 可以通过服务降级功能临时屏蔽某个出错的非关键服务并定义 ...

  7. 【转】linux的特殊符号与正则表达式

    [转]linux的特殊符号与正则表达式 第1章 linux的特殊符号 1.1 通配符 * {} 1.1.1 含义 方便查找文件 通配符是用来找文件名字的. 1.1.2  * 通过find 命令找以 . ...

  8. 扫AR

  9. Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列

    Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列   前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE  T1.CODE  IN ( SEL ...

  10. SharePoint 2010:搜索服务当前处于脱机状态

    错误 搜索服务当前处于脱机状态.请访问 SharePoint 管理中心中的"服务器上的服务"页,以验证是否启用了该服务.这也可能是由于正在移动索引器所致.   正在配置网站集搜索关 ...