当前位置: 首页 > news >正文

拓展中国剩余定理

https://www.luogu.com.cn/problem/P4777

题意概述:给定一组同余方程:

\[x \equiv s_i \pmod {t_i} \]

求方程的最小非负整数解,注意不保证所有 \(s_i\) 互质。


考虑从 \(res = px + q\)\(res = s_iy+t_i\) 的拓展:

两式相减,整理得到 \(px - s_iy = t_i - q\)

注意到这是一个丢番图方程,令 \(a = p,b = s_i,c = t_i - q,d = gcd(a,b)\),(注意如果 \(c\) 不是 \(d\) 的倍数方程无解),使用拓展欧几里得算法求得一个特解 \(x'\),模 \(b/d\) 调整成最小非负解。

那么通解 \(x = x' + k \cdot (b/d)\)\(k\) 是任意整数,带入 \(res = px + q\),得:

\[res = (b/d) \cdot p \cdot k + p \cdot x' + q \]

这里 \(k\) 是变量,故 \(p\)\(q\) 迭代成 $ (b/d) \cdot p $ ,$ p \cdot x' + q $。

最后 \(q\) 就是最小非负整数解。

实现上注意开 i128,同时迭代后 \(q\)\(p\) 取模。


//author:kzssCCC#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using i128 = __int128;void solve(){int n;cin >> n;vector<ll> s(n+1),t(n+1);for (int i=1;i<=n;i++){cin >> s[i] >> t[i];}ll p=1,q=0;for (int i=1;i<=n;i++){ll a = p;ll b = s[i];ll c = t[i]-q;ll d = __gcd(a,b);ll x,y;function<void(ll,ll)> exgcd = [&](ll a,ll b){if (b==0){x = 1;y = 0;}else{exgcd(b,a%b);ll tx = x;ll ty = y;x = ty;y = tx-a/b*ty;}};exgcd(a,b);x = (i128)x*(c/d)%(b/d);x = ((i128)x+b/d)%(b/d);ll np = b/d*p;ll nq = ((i128)p*x%np+q)%np;p = np;q = nq;}cout << q << '\n';
}int main(){ios::sync_with_stdio(false);cin.tie(0);int t = 1;// cin >> t;while (t--) solve();return 0;
}
http://www.jsqmd.com/news/684096/

相关文章:

  • 【NLP实践指南】从BERT的last_hidden_state到pooler_output:如何为不同任务精准选择语义向量
  • 2025届最火的六大AI写作方案推荐榜单
  • 别再手动改Hosts了!用SwitchHosts一键管理多环境,开发效率翻倍(附Git同步配置)
  • 从GitHub到百度云:手把手教你备份和整理吴恩达机器学习全套资源(笔记+代码+视频)
  • 从Slab到内存池:深入拆解Linux内核如何高效管理‘碎片化’小内存(以task_struct为例)
  • 别再只会写黑框框了!用EGE给C语言课设做个带登录界面的图形化系统(附完整源码)
  • 从挂科边缘到高分飘过:我的华科矩阵论自救笔记(附GitHub超全资料)
  • 2026年小红书被朱雀AIGC检测?去i迹+嘎嘎降3步降到15%
  • 从游戏碰撞检测到地图围栏:用Shapely玩转Python几何运算的3个实战项目
  • 别再手动对齐了!用Creo的骨架模型做装配,效率提升不止一点点
  • git提交总结
  • 基于yolov5-v11和deepsort的行人跌倒检测系统 GUI部分使用pyqt5,YOLOv5-v11 + DeepSORT + PyQt5跌倒检测识别系统
  • .NET 11原生AI推理性能翻倍实录:绕开5大Runtime陷阱、3类Tensor内存泄漏与2种JIT编译失效场景
  • 3步实战指南:从零到精通Tesseract OCR识别技术
  • 苹果高层变动:库克卸任 CEO 转任董事长,功绩与争议并存
  • Transformer跨界搞目标检测?拆解Grounding DINO里那些让模型‘听懂人话’的关键模块
  • CN3702 5A 双节锂电池充电管理集成电路
  • 一个让我彻底放弃传统IoT的“AI老六”
  • claude code 安装及 国内大模型接入指南
  • CH34X-MPHSI Master总线扩展实战:SPI设备即插即用与驱动无缝迁移
  • 每日一Go-55、分布式 ID 生成(雪花算法 / Segment / Redis / DB)
  • 换了Homebrew国内源还是装不上Node?可能是你的缓存和源配置在‘打架’
  • 零基础学习C语言:从入门到精通的实用指南
  • 三步解锁QQ音乐加密文件:macOS用户的音频自由指南
  • 流程平台国产替代怎么做,才更像一个技术项目?——从 BPA BPMA BPE BPI 看四层闭环
  • Spring Boot 2.x项目里,Redis突然报`event executor terminated`?别慌,可能是Lettuce连接池配置的锅
  • MATLAB深度学习工具箱:手把手教你调好convolution2dLayer的Padding和Stride,告别输出尺寸的坑
  • 线性判别分析LDA
  • Docker AI工作负载调度失效深度复盘(K8s+Docker+LLM推理协同调度白皮书)
  • 用Python的NumPy和SciPy玩转均匀分布:从骰子模拟到销售预测实战