如此编码 202209-1 C++


一、题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原题目链接

二、解题

1.题目

根据题目的提示,我们已经知道m,需要求解的是b,那我们先求解c,然后再求解b

2.代码

dev c++ 5.11

//202209-1 如此编码
#include<iostream>
using namespace std;
const int N=25;
int a[N],b[N],c[N];
int main(){
    int n,m;
    cin>>n>>m; // 输入 n 和 m
    c[0]=1; // 初始化
    for(int i=1;i<=n;i++){
        cin>>a[i]; // 输入数组 a
        c[i]=c[i-1]*a[i]; // 计算数组 c,即前缀积
    }
    for(int i=1;i<=n;i++){
        b[i]=m%c[i]; // 计算数组 b 中的第 i 个元素
    }
    for(int i=n;i>=1;i--){
        b[i]-=b[i-1]; // 先减去前一个元素的值
        b[i]=b[i]/c[i-1]; // 再除以前一个前缀积的值,得到最终结果
    }
    for(int i=1;i<=n;i++){
        cout<<b[i]<<' '; // 输出数组 b
    }
    return 0;
}




3.提交结果

在这里插入图片描述

总结

1.解释

可以这样理解:中国剩余定理是一种用于求解多个同余方程的方法。同余方程的形式是 x ≡ a (mod m),其中 x 是未知数,a 为已知数,m 为模数。

中国剩余定理对应的问题是:给定 k 个不同的模数 m1, m2, …, mk 和 k 个整数 a1, a2, …, ak,求解同时满足下列 k 个同余方程的 x 值:
x ≡ a1 (mod m1)
x ≡ a2 (mod m2)

x ≡ ak (mod mk)

当且仅当这些模数两两互质时,中国剩余定理保证上述同余方程存在唯一解,并且该解可以表示成 x = b1 * m1 * c1 + b2 * m2 * c2 + … + bk * mk * ck,其中 bi = mi 的乘法逆元 mod mi,ci 表示 x ≡ ai (mod mi) 的唯一解。

换言之,中国剩余定理将一个多项式同余问题转化为了一组线性同余问题,并通过一些计算得到了方程组的唯一解。在实际应用中,中国剩余定理广泛应用于密码学和编码领域,如RSA加密算法和多项式插值编码等。

2.其他

  1. 同余方程组
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值