由若干个一元线性同余方程组构成的方程组,叫做一元线同余方程组。

求解

我们可以将其统一划成a*x ≡ b(mod m)的形式,这样有利于算法的实现。

对于同于方程组的求解,其实质过程就是对于其中的同余方程依次进行两两合并,然后对最终合并的最终同余方程进行求解即可(如果在合并的过程中发现无解则不需要再隽星合并,因为此时该方程组已经无解)。先给出同余方程合并的推到过程,如图所示:

——转载

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long LL;
void exgcd(LL a,LL b,LL &d,LL &x,LL &y)
{if(!b){d=a;x=1;y=0;}else{exgcd(b,a%b,d,y,x);y-=x*(a/b);}
}int main()
{LL i,n,a1,a2,r1,r2,ans,a,b,c,d,x0,y0;while(scanf("%lld",&n)!=EOF){bool ifhave=1;scanf("%lld%lld",&a1,&r1);for(i=1;i<n;i++){scanf("%lld%lld",&a2,&r2);a=a1,b=a2,c=r2-r1;exgcd(a,b,d,x0,y0);if(c%d){ifhave=0;}int t=b/d;x0=(x0*(c/d)%t+t)%t;//保证是最小的正整数r1=a1*x0+r1;a1=a1*(a2/d);}if(!ifhave){printf("-1\n");continue;}printf("%lld\n",r1);}return 0;
}

POJ2891——Strange Way to Express Integers(一元线性同余方程组)相关推荐

  1. 【数论】同余(四):一元线性同余方程组(两两相消、中国剩余定理)

    同余问题共7part,我的博客链接: 基本概念与性质 逆元:概念.求解方法与推导 线性同余方程 一元线性同余方程 一元线性同余方程组 多元线性同余方程 高次同余方程:BSGS算法(大小步算法.拔山盖世 ...

  2. POJ2891 Strange Way to Express Integers

    线性同余方程 题目传送门 解线性同余方程的简单应用,注意要把数据读完再输出-1. 代码: #include<cstdio> #include<cstring> #include ...

  3. 解一元线性同余方程组(详解+例题)

    问题描述:给出bi,ni的值,且n1, n2, n3,-, ni两两之间不一定互质,求Res的值? 解:采用的是合并方程的做法. 这里将以合并第一第二个方程为例进行说明 由上图前2个方程得(设k1.k ...

  4. [POJ2891] Strange Way to Express Integers

    题目描述 FJ正在读佳佳写的一本书,书中描述一种表示非负整数的方法:选择k个不同的正整数a1,a2,-,ak,对于某个整数m分别对ai求余对应整数ri,如果适当选择a1,a2,-,ak,那么整数m可由 ...

  5. POJ2891 Strange Way to Express Integers【扩展中国剩余定理】

    题目大意 就是模板...没啥好说的 思路 因为模数不互质,所以直接中国剩余定理肯定是不对的 然后就考虑怎么合并两个同余方程 \(ans = a_1 + x_1 * m_1 = a_2 + x_2 * ...

  6. poj-2891(Strange Way to Express Integers)--中国剩余定理扩展欧几里得

    题意:找到一个m,使得m%ai=ri,并且这个m最小 m = a1*x + r1; m = a2*y + r2; 可得:a1*x - a2*y = r2 - r1 可得:a1*x ≡ r2-r1(mo ...

  7. POJ2891 Strange Way to Express Integers (扩展欧几里德)

    本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia 题目大意 求解一组同余方程 x ≡ r1 (mod a1) x ≡ r2 (mod a2) x ≡ r ...

  8. 数论练习1 ( 曹冲养猪 + [POJ 2891]Strange Way to Express Integers + 乘法逆元【带证明】)

    虽然作业还没有做完,但是我还是放不下它,对此,我只想说: 今天你对作业爱理不理,明天它就让你补到飞起 DP先放放,我们要雨露均沾 练习上手:乘法逆元 题目 题解 代码实现 曹冲养猪?(互质的中国剩余定 ...

  9. flare-on 7 break第三部分求解:一元线性同余方程

    思考的结论:其实这种国际性的逆向比赛,肯定会考一些数学的知识,这个考的是比较基础了,无奈自己没有这个基础. 话说还是flare 7的break这道题,到了最后,第三步验证,函数竟然来到了0x08053 ...

最新文章

  1. Java项目:学生考勤管理系统(java+SSM+Poi导出+Easyui+JFreeChart+maven+mysql)
  2. 解决vs2017不能添加引用问题
  3. leetcode 39. Combination Sum | 39. 组合总和(Java)
  4. 隐藏滚动条或更改滚动条样式加制作三角形
  5. wamp+多版本mysql_WampServer下安装多个版本的PHP、mysql、apache图文教程,_PHP教程
  6. 【报告分享】2021年中国新经济企业500强发展研究报告.pdf(附下载链接)
  7. tomcat原理及作用,MySQL数据中有很多换行符和回车符
  8. android monkey 测试方法实践
  9. 机器学习套路 —— 样本集的拆分(正样本、负样本)
  10. 【Matlab】Plot的用法详解
  11. Python和Matlab系统比较
  12. Himall商城文件帮助类IOHelper(2)
  13. android 自定义控件实现3D画廊效果
  14. Python爬虫入门以爬取当当商城图片为例
  15. 用html做祝福语朋友,对朋友的励志祝福语大全
  16. Windows mysql secure_file_priv 设置
  17. java日志框架JUL、JCL、Slf4j、Log4j、Log4j2、Logback 一网打尽
  18. 3d建模电脑配置要求
  19. CSS3中的transition和transform属性
  20. html文字段落加边框线,html给文字加边线框的代码

热门文章

  1. UE4 基于灯光角度偏移UV
  2. 文字烟花特效,用JS代码示爱,女程序媛用这个代码挽回了爱情~
  3. win10安装水星无线网卡MW54U
  4. 疫情期间,找工作有多难?
  5. 给定一个链表,一次颠倒链表k的节点并返回其修改列表。如果节点的数量不是k的倍数,那末最后的剩余节点应该保持原样。
  6. 深圳各大公司、行业薪水大曝光(又全又牛)
  7. perfect-scrollbar第三方插件,滚动条插件的使用步骤。
  8. Fischer比特功率分配算法及MATLAB实现
  9. 博弈论 负极大值算法
  10. IDA7.7.220118 - The graph is too big