QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#854979 | #8706. 解方程 | hhoppitree | 100 ✓ | 1139ms | 10316kb | C++17 | 2.0kb | 2025-01-12 11:45:22 | 2025-01-12 11:45:26 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
long long P, a[6], b[6], c[6], ia1, L, B;
long long inv(long long a, long long b = P){
return 1 < a ? b - (__int128)inv(b % a, a) * b / a : 1;
}
int check(long long x) {
x = (__int128)(x + c[1] - L + P) * ia1 % P;
if (!x) return 0;
long long sq = sqrt(x), nw = x % sq;
for (int i = 1; i <= 5; ++i) {
if (((__int128)x * a[i] + (x % b[i] + 1) * nw) % P != c[i]) return 0;
nw = (__int128)nw * x % sq;
}
printf("%lld\n", x);
return 1;
}
pair<long long, int> o[1000005];
void calc(long long x, long long y, long long z) {
z = (z - (__int128)(x - L) * y % P + P) % P;
int r = 0;
for (int i = 0; i < B; ++i) o[r++] = {(__int128)i * y % P, i};
sort(o, o + r);
o[r++] = {P + 5, 0};
long long Y = (__int128)y * B % P, mul = (z - (__int128)Y * (B - 1) % P + P) % P;
for (int i = B - 1; ; --i) {
long long ctr = mul, tl = ctr - L, tr = ctr;
if (tl < 0) tl += P;
if (tl <= tr) {
for (pair<long long, int> *j = lower_bound(o, o + r, make_pair(tl, 0)); j -> first <= tr; ++j) {
if (check(i * B + j -> second)) return;
}
} else {
for (pair<long long, int> *j = lower_bound(o, o + r, make_pair(tl, 0)); j != o + r; ++j) {
if (check(i * B + j -> second)) return;
}
for (pair<long long, int> *j = 0; j -> first <= tr; ++j) {
if (check(i * B + j -> second)) return;
}
}
((mul += Y) >= P) && (mul -= P);
}
}
signed main() {
int T; scanf("%d", &T);
while (T--) {
scanf("%*d%lld", &P), L = 0;
for (int i = 1; i <= 5; ++i) {
scanf("%lld%lld%lld", &a[i], &b[i], &c[i]);
L = max(L, b[i]);
}
L *= 1000000000, B = sqrt(L) + 5;
ia1 = inv(a[1]);
calc(c[1], (__int128)a[2] * ia1 % P, c[2]);
}
return 0;
}
詳細信息
Subtask #1:
score: 15
Accepted
Test #1:
score: 15
Accepted
time: 68ms
memory: 4532kb
input:
40 5 923097614961380909 400075690252081333 1 336925156808111277 125871709464257940 1 69865713802049054 625686524906165721 1 231604442249496820 240111021937539825 1 466914943115931347 877342215923645363 1 405475742085577903 5 954878053655579819 314356765890269968 1 479476497512555507 3066762309305691...
output:
105920391906 517298493095 67193831219 454985828211 684359412322 641300692901 843969628814 441618717944 969809963928 839021293810 844536308194 864204489953 5716199622 878033311810 235677761660 860055517480 657591767649 831659873919 212006513628 404950041144 707100669788 697228408265 379537727517 1651...
result:
ok 40 lines
Subtask #2:
score: 10
Accepted
Test #2:
score: 10
Accepted
time: 68ms
memory: 4392kb
input:
40 5 923097614961380909 400075690252081333 1 36226200850654830 125871709464257940 1 801294848271831 625686524906165721 1 167289389520696370 240111021937539825 1 566782367688890103 877342215923645363 1 437769344508562455 5 954878053655579819 314356765890269968 1 481049707495526324 306676230930569168 ...
output:
78105920391906 5517298493095 10067193831219 17454985828211 61684359412322 54641300692901 15843969628814 53441618717944 9969809963928 44839021293810 82844536308194 2864204489953 61005716199622 40878033311810 16235677761660 62860055517480 22657591767649 831659873919 72212006513628 2404950041144 117071...
result:
ok 40 lines
Subtask #3:
score: 10
Accepted
Test #3:
score: 10
Accepted
time: 72ms
memory: 4532kb
input:
40 5 923097614961380909 400075690252081333 1 167001433276774274 125871709464257940 1 775646046137144068 625686524906165721 1 792747143363812162 240111021937539825 1 511005265275196004 877342215923645363 1 898824348527556482 5 954878053655579819 314356765890269968 1 501561843363742850 306676230930569...
output:
2678105920391906 3105517298493095 5110067193831219 7617454985828211 5261684359412322 6854641300692901 7315843969628814 7653441618717944 1409969809963928 3244839021293810 1082844536308194 4502864204489953 3961005716199622 8740878033311810 3916235677761660 4262860055517480 1722657591767649 45008316598...
result:
ok 40 lines
Subtask #4:
score: 15
Accepted
Test #4:
score: 15
Accepted
time: 104ms
memory: 4388kb
input:
40 5 923097614961380909 400075690252081333 1 711217741985470914 125871709464257940 1 444725029628910905 625686524906165721 1 74716258575747726 240111021937539825 1 409246477245810521 877342215923645363 1 369189987866325821 5 954878053655579819 314356765890269968 1 80576853778385871 30667623093056916...
output:
879580490959010998 903105517298493095 100961799682928291 922539371847228591 628493150920549456 265171336571026545 387315843969628814 156736640668952150 656175720394165068 32328038071528016 917985229574927286 174746756893330317 596886871960748158 28428545478913330 462999434727995866 16638432540308930...
result:
ok 40 lines
Subtask #5:
score: 25
Accepted
Test #5:
score: 25
Accepted
time: 263ms
memory: 6348kb
input:
40 5 923097614961380909 400075690252081333 6 711217743785736202 125871709464257940 6 444725031004785657 625686524906165721 3 74716259410497736 240111021937539825 9 409246477844369931 877342215923645363 10 369189993610199341 5 954878053655579819 314356765890269968 5 80576853778385871 3066762309305691...
output:
879580490959010998 903105517298493095 100961799682928291 922539371847228591 628493150920549456 265171336571026545 387315843969628814 156736640668952150 656175720394165068 32328038071528016 917985229574927286 174746756893330317 596886871960748158 28428545478913330 462999434727995866 16638432540308930...
result:
ok 40 lines
Subtask #6:
score: 25
Accepted
Test #6:
score: 25
Accepted
time: 1139ms
memory: 10316kb
input:
40 5 923097614961380909 400075690252081333 95 711217768089317590 125871709464257940 95 444725049579094809 625686524906165721 98 74716266923247826 240111021937539825 92 409246509568018661 877342215923645363 91 369190035253282361 5 954878053655579819 314356765890269968 96 80576904711097456 30667623093...
output:
879580490959010998 903105517298493095 100961799682928291 922539371847228591 628493150920549456 265171336571026545 387315843969628814 156736640668952150 656175720394165068 32328038071528016 917985229574927286 174746756893330317 596886871960748158 28428545478913330 462999434727995866 16638432540308930...
result:
ok 40 lines