HDOJ1573X问题
https://acm.hdu.edu.cn/showproblem.php?pid=1573
n组线性同余方程求解,最后求出多少解。而最终的解的周期为最小公倍数,范围内的,需要这样算。如果最小超过,那么直接是0,如果无解为0,如果最小为0,那么直接为k个lcm,否则要加上自身的1,因为要求为正整数解。
1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long ll;
4 ll t,n,m,a1,b1,a2,b2,c,k,ans;
5 const int N=52;
6 ll s[N],r[N];
7 ll ex_gcd(ll a,ll b,ll &x,ll &y)
8 {
9 if(!b){x=1,y=0;return a;};
10 ll d=ex_gcd(b,a%b,x,y);
11 ll tmp=x;
12 x=y,y=tmp-a/b*y;
13 return d;
14 }
15 int main()
16 {
17 scanf("%lld",&t);
18 while(t--)
19 {
20 ll x,y,a,b;
21 bool flag=true;
22 scanf("%lld%lld",&n,&m);
23 for(int i=1;i<=m;i++) scanf("%lld",&s[i]);
24 for(int i=1;i<=m;i++) scanf("%lld",&r[i]);
25 a1=s[1],b1=r[1];
26 for(int i=2;i<=m;i++)
27 {
28 a2=s[i],b2=r[i];
29 a=a1,b=a2,c=b2-b1;
30 ll d=ex_gcd(a,b,x,y);
31 if(c%d!=0) {cout<<0<<'\n';flag=0;break;}
32 k=b/d;
33 x=(x*(c/d)%k+k)%k;
34 b1=a1*x+b1;
35 a1=a1*(a2/d);
36 }
37 if(flag)
38 {
39 if(n-b1<0) cout<<0<<'\n';
40 else
41 {
42 ans=(n-b1)/a1+(b1!=0);
43 cout<<ans<<'\n';
44 }
45 }
46 }
47 return 0;
48 }
HDOJ1573X问题的更多相关文章
随机推荐
- <转>C++继承中虚函数的使用
转自:http://blog.csdn.net/itolfn/article/details/7412364 一:继承中的指针问题. 1. 指向基类的指针可以指向派生类对象,当基类指针指向派生类对 ...
- lvm 扩容
总体思路: 逻辑卷要扩容,先扩容对应卷组, 扩容卷组的方式: 添加新的物理卷(磁盘已有分区,扩容后新建分区:或者新加了一块硬盘创建了新的物理卷),vgextend myvg /dev/vdb 扩容,/ ...
- 在myeclipse里加大tomcat内存,jdk内存方法
这是在myeclipse里加大的方法: -Xms4096m -Xmx4096m -XX:MaxNewSize=4096m -XX:MaxPermSize=4096m 如图所示: -XX:PermSiz ...
- 输入npm install 报错npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.13.1 postinstall: `node scripts/build.js`
输入npm install 报以下错误 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! node-sass@4.13.1 postinstall: ...
- C(++)判断文件是否存在
代码 核心代码 /// 判断文件是否存在 bool is_exist_file_(std::string&& str_file) { struct stat st; return (0 ...
- 【LeetCode】205. Isomorphic Strings 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典保存位置 字典保存映射 日期 题目地址:http ...
- 【LeetCode】312. Burst Balloons 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/burst-ba ...
- [LeetCode]485. Max Consecutive Ones 找到最大的连续的1的个数
题目描述 输入只有0和1的数组(长度为正整数,且<10000),找到最大的连续1的个数 比如[1,1,0,1,1,1],输出3 思路 遍历数组,统计当前连续个数curCount和最大连续值max ...
- 【Java例题】4.2 级数求和2
2. 计算级数之和: y=1/1!*x-1/3!*x^3+1/5!*x^5+...+ (-1)^n/(2n+1)!*x^(2n+1). 这里的"^"表示乘方,"!&quo ...
- null和空字符串对于查询where条件语句的影响
在数据库中我们进行数据处理的过程中,对于null值或者空字符串的情况对于这种数据我们进行计算平均值以及查询过程中如何进行对于这类数据的处理呢? step1:建表:create table a(id i ...