QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#267816 | #3274. 随机游走 | KHIN | 20 | 306ms | 3488kb | C++17 | 1.7kb | 2023-11-27 19:01:34 | 2023-11-27 19:01:36 |
Judging History
answer
# include <bits/stdc++.h>
using namespace std;
long n, m, p;
inline long pow(long a, long n) {
long r(1);
while (n) {
r = r * (n & 1 ? a : 1) % p;
a = a * a % p, n >>= 1;
}
return r;
}
inline long inv(long x) {
x = (x % p + p) % p, assert(x);
long res(1);
while (x != 1)
res = p - res * (p / x) % p, x = p % x;
return res;
}
inline long s(long const n, long const c) {
if (c == 1) return n * (n + 1) / 2 % p;
long const v0((c - pow(c, n + 1)) * inv(1 - c) % p);
long const v1(n * pow(c, n + 1) % p);
// cerr << __func__ << ' ' << n << ' ' << c << ' ';
// cerr << (v0 - v1) * inv(1 - c) % p << endl;
return (v0 - v1) * inv(1 - c) % p;
}
inline void tr(long& a, long& b, long l, long r, long c) {
// cerr << __func__ << ' ' << a << ' ' << b << ' ';
// cerr << l << ' ' << r << ' ' << c << endl;
b = (b + a * c % p * pow(c + 1, l - 1) % p * s(r - 1, inv(c + 1))) % p;
b = (b - a * c % p * pow(c + 1, l - 1) % p * s(l - 1, inv(c + 1))) % p;
a = a * pow(inv(c + 1), r - l) % p;
// cerr << "--->" << ' ' << a << ' ' << b << endl;
}
int main() {
long t;
cin >> t;
for (long i(1); i <= t; ++i) {
cin >> n >> m >> p;
if (n == 1) {
cout << 0 << endl;
continue;
}
long a(1), b(0);
if (m < n - 1) {
tr(a, b, 1, n - m, 0);
tr(a, b, n - m, n, 1);
} else {
long const q((m - (n - 2)) / (n - 1) % p);
long const r((m - (n - 2)) % (n - 1) % p);
long const p(n - r);
tr(a, b, 1, 2, q + 0);
tr(a, b, 2, p, q + 1);
tr(a, b, p, n, q + 2);
}
b = (b + (n - 1) * a) % p;
// cerr << a << ' ' << b << endl;
cout << (b + p) * inv(a) % p << endl;
}
}
详细
Subtask #1:
score: 0
Runtime Error
Test #1:
score: 0
Runtime Error
input:
10 1 4 13 5 5 13 4 1 5 5 4 19 5 3 13 4 3 5 5 5 3 5 0 13 5 3 11 5 2 11
output:
0 9 1 14 9 0
result:
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 20
Accepted
Test #12:
score: 20
Accepted
time: 0ms
memory: 3336kb
input:
3 50 1176 996401303 32 2987 155037041 50 2988 151905847
output:
648908787 66401579 38490965
result:
ok 3 number(s): "648908787 66401579 38490965"
Test #13:
score: 0
Accepted
time: 1ms
memory: 3368kb
input:
3 29 2998 246545267 36 2974 478356289 50 2988 26040349
output:
56503230 47120338 17627948
result:
ok 3 number(s): "56503230 47120338 17627948"
Test #14:
score: 0
Accepted
time: 1ms
memory: 3372kb
input:
3 50 786 47167339 6 1927 749106907 50 2988 256035071
output:
11176882 251691451 148363749
result:
ok 3 number(s): "11176882 251691451 148363749"
Test #15:
score: 0
Accepted
time: 1ms
memory: 3332kb
input:
3 26 2183 384727177 30 261 964145569 50 2157 202689667
output:
44694850 83010044 86414622
result:
ok 3 number(s): "44694850 83010044 86414622"
Test #16:
score: 0
Accepted
time: 1ms
memory: 3488kb
input:
3 50 2987 113062769 50 2991 421297439 33 1497 159643999
output:
74284538 54636736 28803039
result:
ok 3 number(s): "74284538 54636736 28803039"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3356kb
input:
3 20 2658 631506563 42 2993 985976993 50 2991 125834273
output:
463245633 350919151 103501536
result:
ok 3 number(s): "463245633 350919151 103501536"
Test #18:
score: 0
Accepted
time: 1ms
memory: 3348kb
input:
3 50 1666 935697701 50 2991 97880953 50 2989 379438277
output:
884846091 60999820 181024193
result:
ok 3 number(s): "884846091 60999820 181024193"
Test #19:
score: 0
Accepted
time: 1ms
memory: 3372kb
input:
3 6 821 460911571 50 1962 394748467 24 667 288131461
output:
265269934 191749401 30141866
result:
ok 3 number(s): "265269934 191749401 30141866"
Test #20:
score: 0
Accepted
time: 0ms
memory: 3352kb
input:
3 28 2996 4639 50 2989 5503 22 860 8317
output:
1707 4223 5631
result:
ok 3 number(s): "1707 4223 5631"
Subtask #5:
score: 0
Runtime Error
Test #21:
score: 10
Accepted
time: 306ms
memory: 3488kb
input:
100000 131041815 82425709 973269833 1000000000 133485914 914586097 1000000000 656456127 710371681 997582513 565181843 562372439 408132767 155729069 769555159 1000000000 273473664 948428059 1000000000 316183756 256824341 1000000000 545457176 316221341 1000000000 543611855 725299283 1000000000 2768170...
output:
170639233 354369375 437567644 510243471 474848560 683948739 33009378 221152396 105920857 235598916 161992388 59427021 31554528 76060516 176637795 218796785 781847957 359069190 45082252 154665745 340449824 792541264 629971088 226324230 11077269 42982894 109551810 205443463 314317005 817673349 1268759...
result:
ok 100000 numbers
Test #22:
score: -10
Runtime Error
input:
100000 1000000000 502051416 761 1000000000 317253303 7079 261914492 28544766 7109 1000000000 53098857 4523 1000000000 626990095 1511 1000000000 595867001 9941 1000000000 134705841 509 986311533 78215730 7213 829350538 787063677 9241 436495419 125319672 1303 989338444 679402972 9397 1000000000 173031...
output:
250 1512 1089 1203 538 5788 190 12 255 712 2274 1728 2543 292 312 1852 6568 784 1433 1908 200 2101 1177 2365 2989 1746 5384 765 7090 1864 4356 188 524 5623 2865 3188 174 1506 4888 281 1112 1792 4396 931 321 93 65 107 6980 899 1847 4012 346 4648 1536 4521 2264 5847 1182 5441 12 3148 7587 195 4614 328...
result:
Subtask #6:
score: 0
Skipped
Dependency #1:
0%