1  快速幂求逆元  p为质数

2 扩展欧几里得算法(欧几里得算法)

3 阶乘求逆元

4 求1~n的逆元:即:线性法求逆元

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
typedef long long ll;
const int N=3e6+10;
int n,p;
ll str[N];

int main()
{
	scanf("%d%d",&n,&p);
	str[0]=str[1]=1;
	//0的阶乘和逆元都是属于1
    cout<<1<<endl;
	for(int i=2;i<=n;i++)
	{
		str[i]=((p-p/i)*str[p%i])%p;//因为逆元不可以是负数,所以(-p/i)%p===(p-p/i)%p 
		//因为这道题p%i最终的结果不会超过i,但是有前提的,因为p%1==0或者1,所以单独进行初始化
		printf("%lld\n",str[i]);
	}
		
    return 0;
}

  

posted on 2022-09-09 21:10  浅唱\,,笑竹神易  阅读(79)  评论(0)    收藏  举报