hdu 3579(中国剩余定理非互质)
解题思路:这道题目因为不一定是互质的,所以直接套用中国剩余定理肯定是错的,,这里采用的是非互质的方法。。。之前的博客上面有详细的证明过程和算法,这里就不罗嗦了。。但是这道题目在输出的时候有特定的要求,要求是最小正整数,所以出现0的情况肯定是错的。如果出现0的情况,就取它们的最小公倍数即可。。
另外,多个数求最小公倍数的方法同样还是 a1*a2*a3*......*an / gcd(a1,a2,a3,......,an)。
AC:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;__int64 extend_gcd(__int64 a,__int64 b,__int64 &x,__int64 &y)
{if(a == 0 && b == 0) return -1;if(b == 0){x = 1; y = 0;return a;}__int64 d = extend_gcd(b,a%b,y,x);y -= a/b*x;return d;
}__int64 gcd(__int64 a,__int64 b)
{return b == 0 ? a : gcd(b,a%b);
}void Chinese_Remainder(int m,int *a,int *b)
{static int cas = 1;__int64 n1,n2,b1,b2,flag = 0;n1 = a[0]; b1 = b[0];for(int i = 1; i < m; i++){n2 = a[i]; b2 = b[i];__int64 c = b2 - b1;__int64 x,y,d;d = extend_gcd(n1,n2,x,y);if(c % d){flag = 1;break;}__int64 t = n2 / d;x = (c /d * x % t + t) % t;b1 = b1 + x * n1;n1 = n1 / d * n2;}cout<<"Case "<<cas++<<": ";if(flag)cout<<-1<<endl;else {if(b1 == 0 && m > 1){b1 = a[0];__int64 ans = 1;for(int i = 1; i < m; i++)b1 = gcd(a[i],b1);for(int i = 0; i < m; i++)ans *= a[i];b1 = ans / b1;}else if(b1 == 0 && m == 1)b1 = a[0];cout<<b1<<endl;}
}int main()
{int t,n,a[6],b[6];cin>>t;while(t--){cin>>n;for(int i = 0; i < n; i++)cin>>a[i];for(int i = 0; i < n; i++)cin>>b[i];Chinese_Remainder(n,a,b);}return 0;
}
hdu 3579(中国剩余定理非互质)相关推荐
- hdu 1573(中国剩余定理非互质情况)
解题思路:这道题目有可能a[i],两两不互质,所以直接用中国剩余定理肯定是不对的..这里考虑非互质的情况 问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的 ...
- 2019牛客暑期多校训练营(第九场)A——The power of Fibonacci(循环节+中国剩余定理(互质)||广义BM)
链接:https://ac.nowcoder.com/acm/contest/889/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 中国剩余定理(互质与不互质的情况)
前言:这个东西听说好久了,一直想学但是总是看到一半就放弃了,今天咬咬牙,就去研究一下吧. 中国剩余定理: 问题引入 在<孙子算经>中有这样一个问题:"今有物不知其数,三三数之剩二 ...
- 中国剩余定理 互质与非互质版本
中国剩余定理互质版 设m1,m2,m3,...,mk是两两互素的正整数,即gcd(mi,mj)=1,i!=j,i,j=1,2,3,...,k. 则同余方程组: x = a1 (mod n1) x = ...
- 中国剩余定理matlab非互质,中国剩余定理模板(互质版和非互质版)
互质版: #include #include #include using namespace std; typedef __int64 int64; int64 a[15],b[15]; int64 ...
- 数学--数论--HDU1825(积性函数性质+和函数公式+快速模幂+非互质求逆元)
As we all know, the next Olympic Games will be held in Beijing in 2008. So the year 2008 seems a lit ...
- 中国剩余定理求解同余线性方程组(模数互素和非互素的情况)
参考:http://yzmduncan.iteye.com/blog/1323599 中国剩余定理 中国剩余定理是中国古代求解一次同余方程组的方法,是数论中的一个重要定理. 设m1,m2,m3,... ...
- HDU, 3579 Hello Kiki
题意:--中国剩余定理非互质版 思路:中国剩余定理非互质版 PS:注意只有一个数且余数为0时特判 = =关于互质版中国剩余定理直接copy了模版 剩余定理互质版模版来源:一 二 代码: 1 #incl ...
- 扩展中国剩余定理模板
这就是神奇的非互质版CRT,同余方程组中各个模数可能不互质,如果再用以前互质版的做法就会出错(这个的原因我也没有深究,如果有兴趣的小伙伴懂的话欢迎在评论区里指点本蒟蒻). 对于模数不互质的情况,需要逐 ...
最新文章
- Bing Maps Geographic Coverage - Bing地图图像覆盖范围
- Altium designer中导入CAD文件
- centos7 redis5.0以后版本 集群部署示例
- layui导出html到pdf,layui打印html页面转成pdf
- MySQL的乱码解决方案
- 最新原生nodejs调试器的使用大全详解
- 中国羽绒服市场深度调查研究报告
- 准备写个linux下的千千静听
- 1919获阿里20亿投资,独角兽如何搅动酒饮业格局
- 局域网被限速,爱快IP聚合突破限速,网管直呼内行
- Turtle 画方形 画圆 画三角形
- git使用进阶(一)——工作区和log
- 数据传输过程加密方案
- 读Redis对比数据库数据进行稽核
- Java之父--Gosling
- 数据分析案例-四川省旅游景点数据分析
- 3D【8】鸟类重建:Learning Category-Specific Mesh Reconstruction from Image Collections阅读笔记
- pyecharts可视化神器使用与避坑指南
- C语言程序设计 飞行小鸟游戏
- InfoQ专访“白帽黑客”吴石:两次破解特斯拉的腾讯安全科恩实验室这次为什么瞄准物联网?