1 条题解
-
0
因为 p 为质数,可以使用费马小定理求解。
80分,暴力求幂
#include <bits/stdc++.h> using namespace std; int main() { int n,p; cin>>n>>p; for(int i=1;i<=n;i++){ //输出i的逆元 //基于费马小定理,p是质数,所以i模p意义下的逆元为 i^{p-2} int ans=1; for(int j=1;j<=p-2;j++) ans=ans*i%p; cout<<ans<<"\n"; } return 0; }
100分,快速幂
#include <bits/stdc++.h> using namespace std; // a^b (mod p) long long quick_pow(long long a, long long b, long long p) { long long res = 1; while (b) { if (b & 1) res = (res * a) % p; b = b >> 1; a = (a * a) % p; } return res; } //求 x 在模 p 意义下的逆元(要求 p 是一个质数) long long inv(long long x, long long p) { return quick_pow(x, p - 2, p); } int main() { long long n, p; cin >> n >> p; for (long long i = 1; i <= n; i++) cout << inv(i, p) << "\n"; return 0; }
- 1
信息
- ID
- 1109
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 78
- 已通过
- 27
- 上传者