QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#370031 | #5. 在线 O(1) 逆元 | OneWan | Compile Error | / | / | C++20 | 1.8kb | 2024-03-28 21:15:03 | 2024-11-05 21:57:54 |
Judging History
你现在查看的是最新测评结果
- [2024-11-05 21:57:54]
- 管理员手动重测本题所有提交记录
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2024-03-28 21:15:05]
- 评测
- 测评结果:Compile Error
- 用时:0ms
- 内存:0kb
- [2024-03-28 21:15:03]
- 提交
answer
#include <"inv.h">
using namespace std;
struct Inverse {
int B, B2, mod;
vector<int> inv, pre, suf;
vector<pair<int, int>> s;
Inverse() = default;
Inverse(int mod) : mod(mod) {
B = pow(mod, 0.3333333333);
B2 = B * B;
inv.resize(mod / B + 1);
inv[1] = 1;
for (int i = 2, j = mod / B ; i <= j ; i++) {
inv[i] = 1LL * (mod - mod / i) * inv[mod % i] % mod;
}
s.resize(B2 + 1);
pre.resize(B2 + 1);
suf.resize(B2 + 1);
s[0] = {0, 1};
s[B2] = {1, 1};
pre[B2] = suf[B2] = B2;
for (int i = 2 ; i <= B ; i++) {
for (int j = 1 ; j < i ; j++) {
int pos = 1LL * j * B2 / i;
if (pre[pos]) continue;
pre[pos] = suf[pos] = pos;
s[pos] = {j, i};
}
}
for (int i = 1 ; i <= B2 ; i++) {
if (pre[i] == 0) {
pre[i] = pre[i - 1];
}
}
for (int i = B2 ; i > 0 ; i--) {
if (suf[i] == 0) {
suf[i] = suf[i + 1];
}
}
}
int calc(int T, pair<int, int> x) {
long long pos = 1LL * T * x.second;
if (llabs(pos - 1LL * mod * x.first) > mod / B) return -1;
pos %= mod;
if (pos <= mod / B) return 1LL * x.second * inv[pos] % mod;
return mod - 1LL * x.second * inv[mod - pos] % mod;
}
int operator()(int x) {
x %= mod;
if (x <= mod / B) return inv[x];
int pos = 1LL * x * B2 / mod, res = calc(x, s[pre[pos]]);
if (res == -1) res = calc(x, s[suf[pos]]);
return res;
}
}; // Inverse
Inverse inv;
void init(int p) {
inv = Inverse(p);
}
int inv(int x) {
return ::inv(x);
}
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:1:10: fatal error: "inv.h": No such file or directory 1 | #include <"inv.h"> | ^~~~~~~~~ compilation terminated.