QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#136495 | #5. 在线 O(1) 逆元 | yyyyxh | 100 ✓ | 5541ms | 81964kb | C++17 | 430b | 2023-08-08 21:21:44 | 2023-08-08 21:21:47 |
Judging History
answer
#include <cstdio>
#include <cassert>
#pragma GCC optimize(2,3,"Ofast")
using namespace std;
const int P=998244353,N=20000003;
typedef long long ll;
int a[N];
void init(int _P){
assert(_P==P);
a[1]=1;
for(int i=2;i<N;++i) a[i]=(ll)a[P%i]*(P-P/i)%P;
}
int inv(int x){
int res=1;
while(x>=N){
int t=P%x;
if(x-t<t) res=(ll)res*(P/x+1)%P,x-=t;
else res=(ll)res*(P-P/x)%P,x=t;
}
return (ll)res*a[x]%P;
}
詳細信息
Test #1:
score: 30
Accepted
time: 190ms
memory: 81768kb
Test #2:
score: 40
Accepted
time: 704ms
memory: 81708kb
Test #3:
score: 30
Accepted
time: 5541ms
memory: 81964kb