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

    P3811 【模板】乘法逆元

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

    T两个点的费马小定理求法:

    code:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    #define int long long
    
    int n,mod;
    
    inline int read(){
    	int sum=0,f=1; char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
    	while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
    	return sum*f;
    }
    
    int ksm(int a,int b){
    	int re=1;
    	while(b){
    		if(b&1)re=re*a%mod;
    		a=a*a%mod;
    		b>>=1;
    	}
    	return re;
    }
    
    signed main(){
    	n=read(); mod=read();
    	for(int i=1;i<=n;i++){
    		printf("%lld
    ",ksm(i,mod-2));
    	}
    }
    

    线性求逆元式子:

    inv[i]=(mod-mod/i)*inv[mod%i]%mod

    code:

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    #define int long long
    
    int n,mod;
    
    inline int read(){
    	int sum=0,f=1; char ch=getchar();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
    	while(ch>='0'&&ch<='9'){sum=(sum<<1)+(sum<<3)+ch-'0'; ch=getchar();}
    	return sum*f;
    }
    
    int inv[3000017];
    
    signed main(){
    	n=read(); mod=read();inv[1]=1;puts("1");
    	for(int i=2;i<=n;i++){
    		printf("%lld
    ",inv[i]=(mod-mod/i)*inv[mod%i]%mod);
    	}
    }
  • 相关阅读:
    Spring框架开发的三种模式
    IDEA 的Surround With快捷键
    Spring框架IOC和AOP的实现原理与详解
    mitmproxy 安装配置
    adb 使用
    小象代理
    requests 模块查看请求的ip地址
    smtplib 邮件模块
    淘宝直播数据爬取 + 淘宝模拟登陆
    postgresql基础操作
  • 原文地址:https://www.cnblogs.com/wangxiaodai/p/9868502.html
Copyright © 2011-2022 走看看