HDU1573-模线性方程
模线性方程的模板题。(卡了一会,发现读入弄错了)
#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-模线性方程相关推荐
- Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
基于最大公约数欧几里得扩展算法求解算法导论中模线性方程解.具体要结合算法导论中的有关数论算法章节理解,具体代码如下: package cn.ansj;/*假设方程ax=b(mod n)有解,且x0是方 ...
- 【原创】更相减损术 stein算法 欧几里得算法 拓展欧几里得算法 扩展欧几里得算法 逆元的计算与筛法 解模线性方程
欧几里得 说在前面 数论学复习 Part 6. 然后再来一章CRT和组合数,就飞往概率,以此为跳板去向DP. 计划很美啊你. P.S. 这么说来拉格朗日插值可以说是数论学复习的Part 0了啊. 有一 ...
- 模线性方程(中国剩余定理+扩展中国剩余定理)
已知一系列除数和模数,求最小的满足条件的数 我们先考虑一般的情况,即模数不互质.(扩展中国剩余定理) 我们考虑两个方程的情况 x%M=R x=k1∗M+Rx=k1 * M+Rx=k1∗M+R x%m= ...
- 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 ...
- 模线性方程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 ...
- POJ 1061 青蛙的约会(扩展GCD求模线性方程)
题目地址:POJ 1061 扩展GCD好难懂..看了半天,终于把证明什么的都看明白了..推荐一篇博客吧(戳这里),讲的真心不错.. 直接上代码: #include <iostream> # ...
- HackerRank leonardo-and-lucky-numbers —— 模线性方程的通解
题目链接:https://vjudge.net/problem/HackerRank-leonardo-and-lucky-numbers 题解: 1.根据扩展欧几里得:7*x + 4*y = gcd ...
- 算法总结之求解模线性方程组
算法总结之求解模线性方程组 1)求解模线性方程 ax = b(mod n) 方程ax = b(mod n) -> ax = b + ny ->ax - ny = b -> ax + ...
- c语言中欧几里得模乘法逆元,扩展欧几里得算法同余方程模m乘法逆元详解
欧几里德算法: 复习:求最大公约数算法(欧几里得算法.也叫辗转相除法).欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd ...
最新文章
- deepin开通ssh
- 老婆从怀孕到产子的所有细节
- Oracle添加定时任务
- 【Linux系统编程】Linux线程浅析
- 为什么Kubernetes从节点会join失败
- 基于Linux的Socket编程之TCP全双工Server-Client聊天程序
- webpack学习笔记1
- Perfect swift-server/http
- php 外贸,php 外贸
- linux basename学习
- Dism++ 一款传说中的系统工具,使用简介
- 物联网单片机毕业设计实现
- linux中rar文件包的解压方式
- MDUI中Select初始化问题
- ISG2014 Writeups
- linux卸载分区命令,CentOS删除磁盘分区命令
- linux点亮硬盘locat,Linux中locate whereis which find grep5种查询命令总结
- Python爬取拉钩招聘网,用数据告诉你这类程序员最赚钱
- html 通知页面,12款体验不错的网站提示/通知样式
- 点餐必须扫码属违法!法院刚判了:过度收集个人隐私信息
热门文章
- Java FlameGraph 火焰图
- QTP自传之web常用对象
- 如何在子网中访问上层网络的计算机文件夹
- ASP.NET 2.0 中实现模板中的数据绑定系列(2)
- java星座查询系统_星座查询示例代码
- python类属性的调用方法_问一个关于PYTHON类属性调用方法的问题
- python图形化编程实验_转换图像RGB-实验室与python
- 服务器主板北桥芯片组有哪些,主板芯片组_目前的主板芯片组都有哪些?
- mysql恢复 报错_Mysql 数据恢复报错
- numpy维度交换_“lazy”的transpose()函数——从numpy 数组的内存布局讲起