模线性方程的模板题。(卡了一会,发现读入弄错了)

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cstdlib>
#include<ctime>
#include<map>
#include<queue>
#include<set>
#include<vector>using namespace std;typedef long long ll;
const int MAXN=1e2+5;int n,m,A,B;
int a[MAXN],b[MAXN];void ex_gcd(int a,int b,int &d,int &x,int &y)
{if(!b) {d=a; x=1; y=0;}else{ex_gcd(b,a%b,d,y,x); y-=(a/b)*x;}
}bool eqt_mod(int &A,int &B,int m)
{int C,x,y,d;for(int i=1;i<m;i++){C=b[i]-B; ex_gcd(A,a[i],d,x,y);if(C%d) return false;x=C/d*x%(a[i]/d); B+=A*x; A*=a[i]/d; B%=A;}if(B<0) B+=A;return true;
}int main()
{int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&m);for(int i=0;i<m;i++){scanf("%d",&a[i]);}for(int i=0;i<m;i++){scanf("%d",&b[i]);}A=a[0]; B=b[0];if(eqt_mod(A,B,m)){//printf("A=%d B=%d\n",A,B);if(n<B){printf("0\n");}else if(0==B){printf("%d\n",n/A);}else{printf("%d\n",(n-B)/A+1);}}else{printf("0\n");}}return 0;
}

HDU1573-模线性方程相关推荐

  1. Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)

    基于最大公约数欧几里得扩展算法求解算法导论中模线性方程解.具体要结合算法导论中的有关数论算法章节理解,具体代码如下: package cn.ansj;/*假设方程ax=b(mod n)有解,且x0是方 ...

  2. 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程

    欧几里得 说在前面 数论学复习 Part 6. 然后再来一章CRT和组合数,就飞往概率,以此为跳板去向DP. 计划很美啊你. P.S. 这么说来拉格朗日插值可以说是数论学复习的Part 0了啊. 有一 ...

  3. 模线性方程(中国剩余定理+扩展中国剩余定理)

    已知一系列除数和模数,求最小的满足条件的数 我们先考虑一般的情况,即模数不互质.(扩展中国剩余定理) 我们考虑两个方程的情况 x%M=R x=k1∗M+Rx=k1 * M+Rx=k1∗M+R x%m= ...

  4. POJ 2115 模线性方程 ax=b(mod n)

    /* (x*c+a)%(2^k)==b →(x*c)%(2^k)==b-a 满足定理: 推论1:方程ax=b(mod n)对于未知量x有解,当且仅当gcd(a,n) | b.推论2:方程ax=b(mo ...

  5. 模线性方程ax≡b(mod n) (再结合 程序理解)

    推论1: 方程ax≡b(mod n)对于未知量x有解,当且仅当gcd(a,n) | b (b能被gcd(a,b)整除). 即:若gcd(a,n)|b ==> 有一个解x,使得ax≡b(mod n ...

  6. POJ 1061 青蛙的约会(扩展GCD求模线性方程)

    题目地址:POJ 1061 扩展GCD好难懂..看了半天,终于把证明什么的都看明白了..推荐一篇博客吧(戳这里),讲的真心不错.. 直接上代码: #include <iostream> # ...

  7. HackerRank leonardo-and-lucky-numbers —— 模线性方程的通解

    题目链接:https://vjudge.net/problem/HackerRank-leonardo-and-lucky-numbers 题解: 1.根据扩展欧几里得:7*x + 4*y = gcd ...

  8. 算法总结之求解模线性方程组

    算法总结之求解模线性方程组 1)求解模线性方程 ax = b(mod n) 方程ax = b(mod n) -> ax = b + ny ->ax - ny = b -> ax + ...

  9. c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解

    欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...

最新文章

  1. deepin开通ssh
  2. 老婆从怀孕到产子的所有细节
  3. Oracle添加定时任务
  4. 【Linux系统编程】Linux线程浅析
  5. 为什么Kubernetes从节点会join失败
  6. 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
  7. webpack学习笔记1
  8. Perfect swift-server/http
  9. php 外贸,php 外贸
  10. linux basename学习
  11. Dism++ 一款传说中的系统工具,使用简介
  12. 物联网单片机毕业设计实现
  13. linux中rar文件包的解压方式
  14. MDUI中Select初始化问题
  15. ISG2014 Writeups
  16. linux卸载分区命令,CentOS删除磁盘分区命令
  17. linux点亮硬盘locat,Linux中locate whereis which find grep5种查询命令总结
  18. Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
  19. html 通知页面,12款体验不错的网站提示/通知样式
  20. 点餐必须扫码属违法!法院刚判了:过度收集个人隐私信息

热门文章

  1. Java FlameGraph 火焰图
  2. QTP自传之web常用对象
  3. 如何在子网中访问上层网络的计算机文件夹
  4. ASP.NET 2.0 中实现模板中的数据绑定系列(2)
  5. java星座查询系统_星座查询示例代码
  6. python类属性的调用方法_问一个关于PYTHON类属性调用方法的问题
  7. python图形化编程实验_转换图像RGB-实验室与python
  8. 服务器主板北桥芯片组有哪些,主板芯片组_目前的主板芯片组都有哪些?
  9. mysql恢复 报错_Mysql 数据恢复报错
  10. numpy维度交换_“lazy”的transpose()函数——从numpy 数组的内存布局讲起