pku2891(很经典,很难的 中国剩余定理)
来源:互联网 发布:比特精灵mac版 编辑:程序博客网 时间:2024/05/17 22:27
http://162.105.81.212/JudgeOnline/problem?id=2891
思路:求最小的x,满足 x=ai (mod mi), 这里的ai不互质。考虑两个方程时, x = a1 (mod m1), x = a2 (mod m2), x = a1 + m1*y, x = a2 + m2*z, 联立两式化简得, m1*y+m2*z=a2-a1, 求解出y, 则x=a1+m1*y.对于多个方程,可以另a1=x, m1 = m1*m2, 依次求解下去即可。看了解题报告才能乱七八糟的写了代码:
题意是说,给一组a[i],r[i],求一个最小的m,满足 for_each(i=0: n) a[i]%m=r[i].
即 a[i]*x+r[i]=m,不存在输出-1。
我们首先得到 a1 * x + r1 = m 和 a2 * y + r2 = m,联立得到
a1 * x - a2 * y = r2 - r1,利用ex_gcd解之,先解得a1*X-a2*Y=GCD(a1,a2)时的X Y值和a1,a2的gcd,x y存在整数解的条件是 gcd | r2-r1.是否输出-1就是从这判断。有解即为
x=(r2-r1)/gcd*X
tmp=a2/gcd, x=( ( r2 - r1 ) / gcd * X % tmp + tmp ) % tmp;
接着输入下一组a3,r3,问题变为求满足LCM(a1,a2)%m1=m和
a3%m1=r3的新的m值:m1
LCM(a1,a2) * x + a3 * y = r3 - m 这样只要a1 a2 r1 r2 轮流迭代即可,不用开数组。题目也没说k多大,暗示本题不用开数组。每次更新a1为LCM(a1,a2),r1为m即可。不过注意求x时 ,保持通用性。
- pku2891(很经典,很难的 中国剩余定理)
- poj 1006 中国剩余定理(很高深的样子。。)
- Biorhythms(中国剩余定理的应用)
- fzu1402 猪的安家(中国剩余定理/孙子定理)
- 中国剩余定理的证明
- 中国剩余定理的学习
- 中国剩余定理 ( 的学习 )
- 中国剩余定理的应用
- 中国剩余定理的应用
- 中国剩余定理的扩展
- 中国剩余定理(转)
- 中国剩余定理(韩信点兵)
- poj2891(中国剩余定理)
- POJ_1006_Biorhythms(中国剩余定理)
- 中国剩余定理(续)
- HDU1370(中国剩余定理)
- 中国剩余定理(转载)
- 中国剩余定理(笔记)
- tar排除指定目录
- Android线程间通信的Message机制
- 约瑟夫环算法
- JavaScript:Select标签
- VS2005下如何新建一个WINCE设备的DLL工程
- pku2891(很经典,很难的 中国剩余定理)
- 大型网站性能优化的通用方法
- 10.11 信号_信号集
- SQL Server 查询分析器提供的所有键盘快捷方式(转)
- 哈希表、堆、栈、队列
- 企业应用网站性能优化实例分析
- 连接文件ln的使用方法
- JAVA正则表达式语法(转)
- Java集合应用中的一个小问题