zoukankan      html  css  js  c++  java
  • luogu P3811 【模板】乘法逆元

    题目背景

    这是一道模板题

    题目描述

    给定n,p求1~n中所有整数在模p意义下的乘法逆元。

    输入输出格式

    输入格式:

    一行n,p

    输出格式:

    n行,第i行表示i在模p意义下的逆元。

    输入输出样例

    输入样例#1:

    10 13
    

    输出样例#1:

    1
    7
    9
    10
    8
    11
    2
    5
    3
    4
    

    说明

    (1 leq n leq 3 imes 10 ^ 6, n < p < 20000528 1≤n≤3×10^6,n<p<20000528)
    输入保证 p p 为质数。
    逆元可以线性求:
    inv(i)=((p-p/i)*inv[p%i])%p
    也可以扩展欧几里得求
    那么就是
    ax+p(模数)y=1的解
    也可以根据快速幂来求
    根据费马小定理
    逆元就是a^(p-2)
    以上几种方法均需保证p为素数

    #include<cstdio>
    #include<algorithm>
    #define LL long long
    LL inv[3000053];
    //int inv[MAXN]; 
    void INV(int a,int p) 
    {
        inv[1] = 1;
        for (int i=2; i<=a; ++i)
            inv[i] = (LL)((p-(p/i)%p)%p*inv[p%i]%p)%p; 
    }
    
    
    int main() {
        int n,p;
        scanf("%d%d",&n,&p);
        INV(n,p);
        for(int i=1;i<=n;++i) 
            printf("%d
    ",inv[i]);
        return 0;
    }
    
  • 相关阅读:
    centOS和windows7双系统下重装windows后恢复centOS引导
    第一天
    Spring初学
    myBatis-一级缓存与二级缓存
    myBatis-类型关联
    myBatis-智能标签
    myBati初学
    myBati初学
    博客系统开发
    Y2分班考试 笔试题总结
  • 原文地址:https://www.cnblogs.com/sssy/p/7797180.html
Copyright © 2011-2022 走看看