我是靠谱客的博主 单身电话,最近开发中收集的这篇文章主要介绍逆元相关,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先是逆元的概念 对于正整数,如果有,那么把这个同余方程中的最小正整数解叫做的逆元。

首先是这个同余符号≡
含义
两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余
记作a≡b(mod m)
读作a同余于b模m,或读作a与b关于模m同余。
比如26≡14(mod 12)。


逆元的一种用法是

可以使用逆元将除法转换为乘法: 即,除以一个数取模等于乘以这个数的逆元取模。

除法求模不能类似乘法,对于(A/B)mod C,直接(A mod C)/(B mod C)是错误的,找到B的逆元b(b=B^-1);求出(A*b)modC即可;

由费马小定理:B 关于 P 的逆元为  B^(p-2);



找了个练习题 lightoj1067

题目大意就是让你求组合数,只是组合数会很大所以要用到逆元

然后我用快速幂和拓展欧几里得分别写了写。

#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
#include <stack>
#define fuck() (cout << "--------------------------------" << endl)
#define mod 1000003
using namespace std;
const int maxn = 1000000 + 5;
const int inf = 0x3f3f3f3f;
long long jiecheng[maxn];
long long niyuan[maxn];

long long  exgcd(long long a, long long b,long long &x, long long &y)
{
    if(b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    long long  d = exgcd(b,a%b,y,x);
    y -= a/b*x;
    return d;
}
long long modreverse(long long a, long long MOD)
{
    long long x;
    long long y;
    int d = exgcd(a,MOD,x,y);
    if(d == 1)
        return (x%MOD+MOD)%MOD;
    return -1;
}
//long long  qumo(long long a, long long b)  快速幂函数,分治法
//{
//    if(b == 0) return 1;
//    long long  x = qumo(a,b/2);
//    long long ans = x*x%mod;
//    if(b%2 == 1) ans = ans*a%mod;
//    return ans;
//}
void init()
{
    jiecheng[0] = 1;
    niyuan[0] = 1;
    for(int i=1; i<maxn; i++)
    {
        jiecheng[i] = jiecheng[i-1]*i%mod;
        niyuan[i] = modreverse(jiecheng[i],mod);
        //niyuan[i] = qumo(jiecheng[i],mod-2); 快速幂方法
    }
}
int main()
{
    int T;
    cin >> T;
    int kase = 1;
    init();
    while(T--)
    {
        long long a,b;
        cin >> a >> b;
        long long ans = ((jiecheng[a]*niyuan[b]%mod)*niyuan[a-b])%mod;
        printf("Case %d: %lldn",kase++,ans);
    }
}



最后

以上就是单身电话为你收集整理的逆元相关的全部内容,希望文章能够帮你解决逆元相关所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部