TZOJ 曹冲养猪 (扩展)中国剩余定理

求解:

\equiv a1 (b1)

\equiv a2 (b2)

\equiv a3 (b3)

........

对于 上述式子我们可以拆成 :

M = b1 * p + a1 = b2 * q + a2

左右移项得到:

b1 * p - b2 * q = a2 - a1

可以发现 这就是一个同余方程:

a = b1 , b = b2 , x = p , y = q , c = a2 - a1

 我们就可以用扩展欧几里得算法得到:

p 与 q 的特解 x , y。

同时 p 与 q 的通解也可以获得:p = x + (k * b)  / gcd(a,b) ,q = y + (k * a) / gcd(a,b)

得到新的同余方程:

M = b1 * ( x + k * b / gcd(a,b)) + a1

将原来的  a = b1 , b = b2 , x = p , y = q , c = a2 - a1 。替换回来:

M = b1 * ( p + k * b2 / gcd(b1,b2) ) + a1

化简:因为:b1 * b2 /gcd(b1,b2) =lcm(b1,b2)

所以:M = k * lcm(b1,b2) + p * b1 + a1

得到:新的 a3 =  p * b1 + a1 ,b3 = lcm(b1,b2) 。

这样合并 n - 1次即为答案。

#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define int long long
const int N=5e4+100;
namespace crt{int bi[N],ai[N]; //ai==a ,bi=m1;int n;int mul(int a, int b ,int p){a%=p,b%=p;int z = (long double) a / p * b;int res = (unsigned long long) a * b - (unsigned long long) z * p;return (res + p) % p;}int exgcd(int a, int b, int &x, int &y) {if(b == 0){x = 1; y = 0;return a;}int d = exgcd(b, a % b, x, y);int z = x;x = y;y = z - (a / b) * x;return d;}int excrt()//拓展中国剩余定理{int x, y, k;int M = bi[1], ans = ai[1];//第一个方程的特解for(int i = 2; i <= n; ++ i) {int a = M, b = bi[i], c = (ai[i] - ans % b + b) % b;int d = exgcd(a, b, x, y);int bg = b / d;//lcmif(c % d != 0) return 1e18; //判断是否无解,然而这题其实不用x = mul(x, c / d, bg);//快速乘模板ans += x * M;//更新前k个方程组的答案M *= bg;//M为前k个m的lcmans = (ans % M + M) % M;}ans = (ans % M + M) % M;//if(ans == 0) ans = M;//视情况而定,等于0的时候是因为给定的模数均为1,此时答案应该取任意值均可,而不是只有解 0 ,有时需要特判一下。return ans;}
};
void solve() {int n;cin >> n;crt::n = n;for (int i = 1; i <= n; i++) {int x, y;cin >> x >> y;crt::bi[i] = x;crt::ai[i] = y;}cout << crt::excrt() << '\n';
}
signed main() {IOS;int t = 1;//cin >> t;while (t--) {solve();}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/61675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虹科方案 | 汽车总线协议转换解决方案(二)

上期说到&#xff0c;虹科的PCAN-LIN网关在CAN、LIN总线转换方面有显著的作用&#xff0c;尤其是为BMS电池通信的测试提供了优秀的解决方案。假如您感兴趣&#xff0c;可以点击文末相关链接进行回顾&#xff01; 而今天&#xff0c;虹科将继续给大家带来Router系列在各个领域的…

单调递增的数字——力扣738

文章目录 题目描述解法题目描述 解法 #include<iostream> #include<string>using namespace std;int monotoneIncreasingDigits

腾讯云服务器CPU大全_处理器主频型号清单

腾讯云服务器CPU采用什么处理器型号&#xff1f;主频睿频多少&#xff1f;腾讯云服务器CPU性能如何&#xff1f;云服务器CVM规格不同CPU型号也不同&#xff0c;轻量应用服务器的CPU处理器性能如何&#xff1f;腾讯云服务器网分享腾讯云服务器CPU处理器大全&#xff1a; 目录 …

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

Ubuntu18.04搭配无人机仿真环境 ROS环境配置版本安装 gazebo安装Mavrosa安装PX4源码下载和编译运行仿真地面站安装 ROS环境配置 我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release && echo “deb http://m…

SpringBoot 该如何预防 XSS 攻击

XSS 漏洞到底是什么&#xff0c;说实话我讲不太清楚。但是可以通过遇到的现象了解一下。在前端Form表单的输入框中&#xff0c;用户没有正常输入&#xff0c;而是输入了一段代码&#xff1a;</input><img src1 onerroralert1> 这个正常保存没有问题。问题出在了列表…

SpringSpringBoot常用注解

目录 一、核心注解二、Spring Bean 相关2.1 Autowired2.2 Component, Repository, Service, Controller2.3 RestController 与 Controller2.4 Configuration 与 Component2.5 Scope 三、处理常见的 HTTP 请求类型3.1 GET 请求3.2 POST 请求3.3 PUT 请求3.4 DELETE 请求3.5 PATC…

路由导航守卫中document.title = to.meta.title的作用以及路由跳转修改页面title

目录 &#x1f53d; document.title to.meta.title的作用 &#x1f53d; Vue路由跳转时如何更改页面title &#x1f53d; document.title to.meta.title的作用 路由导航守卫如下&#xff1a; router.beforeEach(async (to, from, next) > {document.title to.meta.ti…

原型模式(C++)

定义 使用原型实例指定创建对象的种类&#xff0c;然后通过拷贝这些原型来创建新的对象。 应用场景 在软件系统中&#xff0c;经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化&#xff0c;这些对象经常面临着剧烈的变化&#xff0c;但是它们却拥有比较稳定一致的…

js 正则表达式

js 正则表达式 http://tool.oschina.net/regex https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions 11 22 333

判断时间段是否重叠

1、逻辑公式 时间段1&#xff1a;start1&#xff08;开始时间&#xff09;&#xff0c;end1&#xff08;结束时间&#xff09; 时间段2&#xff1a;start2&#xff08;开始时间&#xff09;&#xff0c;end2&#xff08;结束时间&#xff09; 重叠条件为&#xff1a;start1 <…

易服客工作室:7个优质WordPress LMS线上教育系统插件比较(优点和缺点)

您是否正在为您的 WordPress 网站寻找最好的 LMS 插件&#xff1f;在线学习管理系统 (LMS) 插件允许您使用 WordPress 创建和运行类似 Udemy 的在线课程。 一个完美的 WordPress LMS 插件包括管理在线课程内容、处理订阅、运行和评分测验、接受付款等功能。 在本文中&#xf…