【模板】中国剩余定理解同余方程(附_int128)

本文详细介绍了中国剩余定理,并结合_int128类型,探讨了解决同余方程组的方法。通过实例解析,阐述了该理论在模算术中的应用,帮助读者深入理解这一数论概念。
摘要由CSDN通过智能技术生成
//问题:求解同余方程组
// x ≡ a1 (mod b1)
// x ≡ a2 (mod b2)
// x ≡ a3 (mod b3)
//  ······
// x ≡ an (mod bn)
//其中b1,b2,b3,······ bn 为不一定两两互质的整数,求x的最小非负整数

//模板
#include<bits/stdc++.h>
#define up(i, x, y) for(__int128 i = x; i <= y; i++)
#define down(i, x, y) for(__int128 i = x; i >= y; i--)
#define maxn ((int)1000 + 10)
#define INF 0x3f3f3f3f
using namespace std;


__int128 n, ai[maxn], bi[maxn];// bi存余数

__int128 exgcd(__int128 a, __int128 b, __int128 &x, __int128 &y)
{
    if(!b){ x = 1; y = 0; return a;}
    __int128 gcd = exgcd(b, a % b, x, y);
    __int128 t = x; x = y;
    y = t - a / b * y;
    return gcd;
}

__int128 excrt()
{
    __int128 x, y, k;
    __int128 M = bi[1], ans = ai[1];//第一个方程的解特判
    for(__int128 i = 2; i <= n; i++)
    {
        __int128 a = M, b = bi[i], c = (ai[i] - ans % b + b) % b;//ax≡c(mod b)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值