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

    题目背景

    这是一道模板题

    题目描述

    给定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≤n≤3×106,n<p<20000528 1 leq n leq 3 imes 10 ^ 6, n < p < 20000528 1n3×106,n<p<20000528

    输入保证 p p p 为质数。

    思路

    先扔个线性预处理求逆元,其他回头补QUQ

    代码

    线性预处理;

     1 #include<cstdio>
     2 const int maxn=3e6+10;
     3 int n,p;
     4 int inv[maxn]={0,1};
     5 int main(){
     6     scanf("%d%d",&n,&p);
     7     if(n>0) puts("1");
     8     for(int i=2;i<=n;i++){
     9         inv[i]=1ll*(p-p/i)*inv[p%i]%p;
    10         printf("%d
    ",inv[i]);
    11     }
    12     return 0;
    13 }

    不知道从哪里偷来的片段:

    int FP(int x,int y) {
        int ret=1;
        while(y) {
            if(y&1) ret=(1ll*ret*x)%p;
            y>>=1,x=(1ll*x*x)%p;
        }
        return ret;
    }
    int IE(int x) {return FP(x,p-2);}
  • 相关阅读:
    网络安全之常见攻击
    引入element-ui
    引入sass
    浏览器解析流程
    JDK8 HashMap--removeNode()移除节点方法
    JDK8 HashMap--treeify()树形化方法
    JDK1.8 HashMap--treeifyBin()方法
    二叉查找树ADT
    队列ADT

  • 原文地址:https://www.cnblogs.com/J-william/p/7806472.html
Copyright © 2011-2022 走看看