QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#480160 | #5. 在线 O(1) 逆元 | Williamxzh# | Compile Error | / | / | C++20 | 1011b | 2024-07-16 08:59:48 | 2024-11-05 22:01:25 |
Judging History
你现在查看的是最新测评结果
- [2024-11-05 22:01:25]
- 管理员手动重测本题所有提交记录
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2024-07-16 08:59:48]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2024-07-16 08:59:48]
- 提交
answer
#include <bits/stdc++.h>
#include "inv.h"
#define il inline
#define B __int128
using namespace std;
typedef long long ll;
const int mod=998244353;
il ll qp(ll a,ll b){
ll ans=1ll;
while(b){
if(b&1) ans=(ans*a)%mod;
a=(a*a)%mod,b>>=1;
}return ans;
}
const ll N=2e7+5;
int n,fac[N],iv[N],b[31];
void init(int MOD){
n=N-5,fac[0]=1;for(int i=1;i<=n;++i) fac[i]=(1ll*fac[i-1]*i)%mod;
iv[n]=qp(x,mod-2ll);for(int i=n-1;i>=0;--i) iv[i]=(iv[i+1]*(i+1ll))%mod;
for(int i=1;i<=n;++i) iv[i]=(1ll*fac[i-1]*iv[i])%mod;
for(int i=1;i<=29;++i) b[i]=qp(1ll<<i,mod-2ll);
}
il int INV(int x){
if(x<=n) return iv[x];
int y=mod/x;return 1ll*(mod-y)*inv(mod-x*y)%mod;
}
int inv(int x){
if(x&1) return inv(x);
int y=__builtin_ctz(x);
return 1ll*inv(x>>y)*b[y]%mod;
}
/*int main(){
init(mod);
mt19937 rnd(time(0));
for(int i=1;i<=100;++i){
int x=rnd()%(mod-1)+1;
if(inv(x)!=qp(x,mod-2ll)) printf("%d %d %d\n",x,inv(x),qp(x,mod-2ll));
//else puts("*");
}
return 0;
}*/
Details
implementer.cpp: In function ‘int main()’: implementer.cpp:22:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 22 | scanf("%d", &n); | ~~~~~^~~~~~~~~~ answer.code: In function ‘void init(int)’: answer.code:19:18: error: ‘x’ was not declared in this scope 19 | iv[n]=qp(x,mod-2ll);for(int i=n-1;i>=0;--i) iv[i]=(iv[i+1]*(i+1ll))%mod; | ^