HDU 1573
/*
同余方程组为 X = ri (mod ai)
在范围内求X的个数
先求出特解 X0;
求出 ai数组的LCM;
则有 Xi = X0+LCM 均能满足方程组,判断是否在范围内!!
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long LL;
LL Ai[20],Ri[20];
void Exgcd(LL a,LL b,LL& d,LL& x,LL& y)
{
if(b == 0) {d = a, x = 1, y = 0;}
else {Exgcd(b,a%b,d,y,x); y -= x*(a/b);}
}
LL Solve(LL* ai,LL* ri,LL n)
{
LL r1 = ri[1], a1 = ai[1];
LL x, y;
bool Jug = true;
for(LL i = 2; i <= n; ++i)
{
LL d;
LL a = a1, b = ai[i], c = ri[i] - r1;
Exgcd(a,b,d,x,y);
if(c % d) Jug = false;
LL t = b / d;
x = (x * (c / d)% t+ t)%t;
r1 = a1 * x + r1;
a1 = a1 * (ai[i]/d);
}
if(Jug) return r1;
else return -1;
}
LL gcd(LL a,LL b) {return b ? gcd(b,a%b) : a;}
int main()
{
LL N,M,T;
cin >> T;
while(T--)
{
cin >> N >> M;
LL Lcm = 1;
for(LL i = 1; i <= M; ++i)
{
cin >> Ai[i];
Lcm = Lcm / gcd(Lcm,Ai[i]) * Ai[i];
}
for(LL i = 1; i <= M; ++i)
{
cin >> Ri[i];
}
LL tmp = Solve(Ai,Ri,M);
//cout << Lcm << endl;
if(tmp == -1) cout << "0\n";
else
{
LL ans = 0;
if(tmp <= N) ans = 1 + (N - tmp) / Lcm;
if(tmp == 0 && ans > 0) ans --;
cout << ans << endl;
}
}
}
HDU 1573的更多相关文章
- HDU 1573 CRT
CRT模板题 /** @Date : 2017-09-15 13:52:21 * @FileName: HDU 1573 CRT EXGCD.cpp * @Platform: Windows * @A ...
- 中国剩余定理 hdu 1573 X问题
HDU 1573 X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 1573 X问题 中国剩余定理
链接:pid=1573">http://acm.hdu.edu.cn/showproblem.php? pid=1573 题意:求在小于等于N的正整数中有多少个X满足:X mod a[ ...
- hdu 1573 X问题 (非互质的中国剩余定理)
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- hdu 1573 X问题
数论题,本想用中国剩余定理,可是取模的数之间不一定互质,用不了,看到网上有篇文章写得很好的:数论——中国剩余定理(互质与非互质),主要是采用合并方程的思想: 大致理解并参考他的代码后便去试试hdu上这 ...
- hdu 1573 A/B (扩展欧几里得)
Problem Description 要求(A/B)%9973,但由于A很大,我们只给出n(n=A%9973)(我们给定的A必能被B整除,且gcd(B,9973)= 1). Input 数据的第一行 ...
- X问题 HDU - 1573(excrt入门题)
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 一些关于中国剩余定理的数论题(POJ 2891/HDU 3579/HDU 1573/HDU 1930)
2891 -- Strange Way to Express Integers import java.math.BigInteger; import java.util.Scanner; publi ...
- hdu 1573 X问题 不互质的中国剩余定理
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU 1573 X问题 (中国剩余定理)
题目链接 题意 : 中文题不详述. 思路 : 中国剩余定理.求中国剩余定理中解的个数.看这里看这里 #include <stdio.h> #include <iostream> ...
随机推荐
- 4月1日->-4月15日 2周阶段性计划
4月1日->4月14日 ST表 树状数组 LCA 一周的时间,力求掌握这三个知识点并各刷五道题左右. 树状数组 ST表 LCA 然而:进展总比计划快(......什么鬼) 树状数组刷了5题,ST ...
- share.js一键分享到微博、QQ空间、QQ好友、微信、腾讯微博、豆瓣、Facebook、Twitter、Linkedin、Google+、点点等
官网上面 https://github.com/overtrue/share.js非常详细的介绍了share.js他的使用 使用方式有:第一:使用 npm npm install social-sha ...
- 代码大片出现报错,请重新编译——Clean
工作空间中项目莫名大片报错,可能是各种意外原因导致的代码编译错误,可以选 菜单栏的 Project,Clean一下全部项目,系统会自动重新编译所有项目,有时会有奇效.
- SQL 运算符
运算符是一个保留字或字符,主要用于连接WHERE后面的条件. 一.算数运算符 运算符 描述 + 加法 把运算符两边的值相加 - 减法 左操作数减去右操作数 * 乘法 把运算符两边的值相乘 / 除法 左 ...
- 关于setvbuf()函数的详解
为什么要使用setvbuf函数 如果你的内存足够大,可以把文件IO的BUF设置大一些,这样每次你用fopen/fread/fwrite/fscanf/fprintf语句的时候,都会在内存里操作,减少内 ...
- 洛谷 P1083 借教室
传送门:Probem 1083 https://www.cnblogs.com/violet-acmer/p/9721160.html 一.暴力简述 首先我们不难看出,这道题--并不是一道多难的题,因 ...
- idea去掉无效引用
Mac版的idea,打开Preference->Editor->General,打勾红色框框. 然后使用快捷键 contrl + option + o 只能去掉当前文件没有引用的包,并不能 ...
- 【清北学堂2018-刷题冲刺】Contest 9
前几天本蒟蒻一直在颓废所以这篇题解咕了很久,而且最后一个题目不太会,最终也没完成,非常惭愧. 写这些题目收获相当大.后面的日子呢,我会继续着手刷NOIP题目和Codeforces题目. 到这里就 ...
- koa的洋葱圈模型
拿以下这段代码为例: const Koa = require('koa'); const app = new Koa(); // x-response-time app.use(async (ctx, ...
- P1169 [ZJOI2007]棋盘制作 && 悬线法
P1169 [ZJOI2007]棋盘制作 给出一个 \(N * M\) 的 \(01\) 矩阵, 求最大的正方形和最大的矩形交错子矩阵 \(n , m \leq 2000\) 悬线法 悬线法可以求出给 ...