QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#372715 | #2828. Algebra | ckiseki# | AC ✓ | 1279ms | 120340kb | C++20 | 5.3kb | 2024-03-31 17:55:37 | 2024-03-31 17:55:38 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define all(x) begin(x), end(x)
#ifdef CKISEKI
#define safe cerr << __PRETTY_FUNCTION__ << " line " << __LINE__ << " safe\n"
#define debug(a...) debug_(#a, a)
#define orange(a...) orange_(#a, a)
void debug_(auto s, auto ...a) {
cerr << "\e[1;32m(" << s << ") = (";
int f = 0;
(..., (cerr << (f++ ? ", " : "") << a));
cerr << ")\e[0m\n";
}
#include <experimental/iterator>
void orange_(auto s, auto L, auto R) {
cerr << "\e[1;33m[ " << s << " ] = [ ";
using namespace experimental;
copy(L, R, make_ostream_joiner(cerr, ", "));
cerr << " ]\e[0m\n";
}
#else
#define safe ((void)0)
#define debug(...) safe
#define orange(...) safe
#endif
constexpr int N = 500'000 + 5;
vector<int> f[N];
constexpr int64_t INF = 1LL << 60;
int64_t mul(int64_t a, int64_t b) {
// a * b >= INF
// a >= INF / b
if (a >= INF / b)
return INF;
return min(a * b, INF);
}
constexpr int64_t qpow(int64_t a, int64_t k) {
int64_t r = 1;
while (k) {
if (k & 1)
r = mul(r, a);
k >>= 1;
a = mul(a, a);
}
return r;
}
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n;
int64_t m;
int k;
while (cin >> n >> m >> k) {
for (int i = 1; i <= m; ++i) {
for (int j = i; j <= m; j += i) {
f[j].push_back(i);
}
}
if (n == 1) {
if (k == 1) {
cout << (2 * m + 1) * (2 * m + 1) - 2 * m - 1 << '\n';
} else {
cout << "0\n";
}
} else if (n == 2) {
int ans = 0;
// b = 0
for (int a = -m; a <= m; ++a)
ans += (1 + (a != 0)) == k; // {a, 0}
// b != 0
for (int b = 1; b <= m; ++b) {
for (int p : f[b]) {
const int q = b / p;
if (p > q)
break;
if (const int a = p + q; a <= m) {
// (x - p)(x - q) = 0
ans += (1 + (p != q)) == k; // {a, b}
// (x + p)(x + q) = 0
ans += (1 + (p != q)) == k; // {-a, b}
}
if (const int a = q - p; a <= m) {
// (x - p)(x + q) = 0
ans += 2 == k; // {a, -b}
if (p != q) {
// (x + p)(x - q) = 0
ans += 2 == k; // {-a, -b}
}
}
}
}
cout << ans << '\n';
} else {
map<pair<int, int>, int> cnt;
// b = 0
// x = 0
for (int a = -m; a <= m; ++a)
cnt[{a, 0}]++;
// x != 0
for (int x = 1; x <= 710; ++x) {
int64_t a = qpow(x, n - 1);
if (abs(a) > m)
break;
cnt[{-a, 0}]++;
if (n % 2 == 0)
a = -a;
cnt[{-a, 0}]++;
}
int ans = 0;
for (auto [ab, c] : cnt) {
auto [a, b] = ab;
//if (c == k) {
// cout << "x^" << n << " + " << a << "x + " << b << " = 0\n";
//}
ans += c == k;
}
//cout << "ans = " << ans << '\n';
// b != 0
for (int b = 1; b <= m; ++b) {
vector<int> as, asn;
for (int x : f[b]) {
// b > 0
{
int64_t xn1 = qpow(x, n - 1);
// x > 0
{
int xn1a = -b / x;
int64_t a = xn1a - xn1;
//cout << "x = " << x << ", ";
//cout << "xn1a = " << xn1a << ", xn1 = " << xn1 << ", a = " << a << '\n';
if (abs(a) <= m)
as.push_back(a);
}
// x < 0
{
int xn1a = b / x;
int64_t a = xn1a;
if (n & 1) a -= xn1;
else a += xn1;
//cout << "x = " << -x << ", ";
//cout << "xn1a = " << xn1a << ", xn1 = " << xn1 << ", a = " << a << '\n';
if (abs(a) <= m)
as.push_back(a);
}
}
// b < 0
{
int64_t xn1 = qpow(x, n - 1);
// x > 0
{
int xn1a = b / x;
int64_t a = xn1a - xn1;
if (abs(a) <= m)
asn.push_back(a);
}
// x < 0
{
int xn1a = b / -x;
int64_t a = xn1a;
if (n & 1) a -= xn1;
else a += xn1;
if (abs(a) <= m)
asn.push_back(a);
}
}
}
ranges::sort(as);
ranges::sort(asn);
//cout << "b = " << b << "\n";
//for (auto ai : as)
// cout << ai << " ";
//cout << '\n';
//cout << "b = " << -b << '\n';
//for (auto ai : asn)
// cout << ai << " ";
//cout << '\n';
if (not as.empty()) {
int v = as[0];
int c = 1;
for (int i = 1; i < ssize(as); ++i) {
if (v == as[i]) {
c += 1;
} else {
ans += c == k;
v = as[i];
c = 1;
}
}
ans += c == k;
}
if (not asn.empty()) {
int v = asn[0];
int c = 1;
for (int i = 1; i < ssize(asn); ++i) {
if (v == asn[i]) {
c += 1;
} else {
ans += c == k;
v = asn[i];
c = 1;
}
}
ans += c == k;
}
}
cout << ans << '\n';
}
for (int i = 1; i <= m; ++i)
f[i].clear();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3592kb
input:
2 1 1 2 2 2 3 3 3
output:
1 7 1
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 146ms
memory: 3644kb
input:
1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 1 13 1 1 14 1 1 15 1 1 16 1 1 17 1 1 18 1 1 19 1 1 20 1 1 21 1 1 22 1 1 23 1 1 24 1 1 25 1 1 26 1 1 27 1 1 28 1 1 29 1 1 30 1 1 31 1 1 32 1 1 33 1 1 34 1 1 35 1 1 36 1 1 37 1 1 38 1 1 39 1 1 40 1 1 41 1 1 42 1 1 43 1 1 44 1 1...
output:
6 20 42 72 110 156 210 272 342 420 506 600 702 812 930 1056 1190 1332 1482 1640 1806 1980 2162 2352 2550 2756 2970 3192 3422 3660 3906 4160 4422 4692 4970 5256 5550 5852 6162 6480 6806 7140 7482 7832 8190 8556 8930 9312 9702 10100 10506 10920 11342 11772 12210 12656 13110 13572 14042 14520 15006 155...
result:
ok 9801 lines
Test #3:
score: 0
Accepted
time: 145ms
memory: 3592kb
input:
1 1 2 1 2 2 1 3 2 1 4 2 1 5 2 1 6 2 1 7 2 1 8 2 1 9 2 1 10 2 1 11 2 1 12 2 1 13 2 1 14 2 1 15 2 1 16 2 1 17 2 1 18 2 1 19 2 1 20 2 1 21 2 1 22 2 1 23 2 1 24 2 1 25 2 1 26 2 1 27 2 1 28 2 1 29 2 1 30 2 1 31 2 1 32 2 1 33 2 1 34 2 1 35 2 1 36 2 1 37 2 1 38 2 1 39 2 1 40 2 1 41 2 1 42 2 1 43 2 1 44 2 1...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 7 13 20 26 36 42 52 59 69 75 89 95 105 115 126 132 146 152 166 176 186 192 210 217 227 237 251 257 2...
result:
ok 9801 lines
Test #4:
score: 0
Accepted
time: 145ms
memory: 3612kb
input:
1 1 3 1 2 3 1 3 3 1 4 3 1 5 3 1 6 3 1 7 3 1 8 3 1 9 3 1 10 3 1 11 3 1 12 3 1 13 3 1 14 3 1 15 3 1 16 3 1 17 3 1 18 3 1 19 3 1 20 3 1 21 3 1 22 3 1 23 3 1 24 3 1 25 3 1 26 3 1 27 3 1 28 3 1 29 3 1 30 3 1 31 3 1 32 3 1 33 3 1 34 3 1 35 3 1 36 3 1 37 3 1 38 3 1 39 3 1 40 3 1 41 3 1 42 3 1 43 3 1 44 3 1...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 9801 lines
Test #5:
score: 0
Accepted
time: 146ms
memory: 3608kb
input:
1 1 4 1 2 4 1 3 4 1 4 4 1 5 4 1 6 4 1 7 4 1 8 4 1 9 4 1 10 4 1 11 4 1 12 4 1 13 4 1 14 4 1 15 4 1 16 4 1 17 4 1 18 4 1 19 4 1 20 4 1 21 4 1 22 4 1 23 4 1 24 4 1 25 4 1 26 4 1 27 4 1 28 4 1 29 4 1 30 4 1 31 4 1 32 4 1 33 4 1 34 4 1 35 4 1 36 4 1 37 4 1 38 4 1 39 4 1 40 4 1 41 4 1 42 4 1 43 4 1 44 4 1...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 9801 lines
Test #6:
score: 0
Accepted
time: 142ms
memory: 3804kb
input:
1 1 100 1 2 100 1 3 100 1 4 100 1 5 100 1 6 100 1 7 100 1 8 100 1 9 100 1 10 100 1 11 100 1 12 100 1 13 100 1 14 100 1 15 100 1 16 100 1 17 100 1 18 100 1 19 100 1 20 100 1 21 100 1 22 100 1 23 100 1 24 100 1 25 100 1 26 100 1 27 100 1 28 100 1 29 100 1 30 100 1 31 100 1 32 100 1 33 100 1 34 100 1 3...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 9801 lines
Test #7:
score: 0
Accepted
time: 146ms
memory: 3552kb
input:
1 1 500000 1 2 500000 1 3 500000 1 4 500000 1 5 500000 1 6 500000 1 7 500000 1 8 500000 1 9 500000 1 10 500000 1 11 500000 1 12 500000 1 13 500000 1 14 500000 1 15 500000 1 16 500000 1 17 500000 1 18 500000 1 19 500000 1 20 500000 1 21 500000 1 22 500000 1 23 500000 1 24 500000 1 25 500000 1 26 5000...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 9801 lines
Test #8:
score: 0
Accepted
time: 256ms
memory: 3796kb
input:
578 237 1 713 995 1 335 454 1 640 374 1 718 942 1 924 478 1 783 694 1 530 793 1 368 502 1 829 291 1 26 32 1 335 212 1 668 98 1 856 793 1 195 958 1 748 337 1 636 73 1 771 608 1 290 152 1 536 945 1 406 436 1 240 85 1 673 849 1 178 951 1 595 462 1 285 105 1 972 369 1 575 295 1 484 149 1 860 903 1 641 1...
output:
1417 5968 2722 2239 5647 2863 4162 4753 3007 1744 187 1270 583 4753 5746 2017 433 3646 907 5665 2611 505 5092 5701 2770 628 2209 1768 889 5413 874 4807 1144 4045 355 439 5764 2269 5665 4576 979 4591 5287 1090 5419 4885 4237 1216 3121 4204 559 3904 3526 2368 2515 3424 3868 3691 4621 196 5176 4579 178...
result:
ok 996 lines
Test #9:
score: 0
Accepted
time: 255ms
memory: 3704kb
input:
203 885 2 132 672 2 671 241 2 919 476 2 961 866 2 557 937 2 517 834 2 883 978 2 367 370 2 298 167 2 554 463 2 666 921 2 416 249 2 414 587 2 426 517 2 605 207 2 115 766 2 495 375 2 755 573 2 336 884 2 936 419 2 968 412 2 14 553 2 284 785 2 219 558 2 746 307 2 100 715 2 782 61 2 106 525 2 87 731 2 830...
output:
0 3 0 0 0 0 0 0 0 3 3 3 3 3 3 0 0 0 0 3 3 3 3 3 0 3 3 3 3 0 3 0 0 3 0 0 3 3 0 3 3 0 3 0 3 0 0 0 0 0 0 3 3 0 0 0 3 3 3 0 3 3 0 0 3 0 3 0 3 3 0 0 3 3 0 3 3 3 3 0 0 0 3 3 3 3 0 3 0 3 0 3 3 3 3 3 0 3 3 0 0 0 0 3 3 0 3 0 3 0 0 0 3 0 3 0 0 0 3 0 3 3 0 0 0 0 3 3 0 0 0 0 3 3 3 3 0 0 3 0 0 0 10 0 3 0 0 0 3 0...
result:
ok 994 lines
Test #10:
score: 0
Accepted
time: 253ms
memory: 4036kb
input:
680 533 3 409 269 3 145 902 3 213 221 3 439 870 3 566 834 3 239 974 3 105 163 3 202 676 3 484 604 3 946 689 3 911 988 3 236 836 3 842 943 3 950 200 3 21 77 3 178 380 3 940 61 3 449 869 3 368 305 3 701 964 3 915 738 3 472 739 3 163 137 3 794 93 3 337 991 3 663 63 3 481 390 3 59 901 3 249 433 3 327 15...
output:
0 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 ...
result:
ok 988 lines
Test #11:
score: 0
Accepted
time: 974ms
memory: 67100kb
input:
240363 277116 2 97128 25738 2 314633 50385 2 16721 95992 2 140375 28183 2 75271 6448 2 354012 11998 2 20088 3953 2 1095 99 2 33619 45 2 399698 32 2 395408 5 2 86410 6 2
output:
0 3 0 0 0 0 3 3 0 0 3 3 3
result:
ok 13 lines
Test #12:
score: 0
Accepted
time: 1134ms
memory: 110276kb
input:
43764 458932 3 475378 11851 3 302405 25039 3 475095 505 3 144912 51 3 166449 351 3 134516 1768 3 349953 807 3 425147 239 3 116238 285 3 373794 99 3 305801 1 3 465817 32 3 167314 4 3 441446 4 3 309241 8 3 462352 8 3 452008 14 3 410841 1 3 195328 1 3
output:
0 0 1 1 0 1 0 1 1 0 0 1 1 0 0 1 0 0 1 0
result:
ok 20 lines
Test #13:
score: 0
Accepted
time: 906ms
memory: 31144kb
input:
208927 82695 10 480469 112188 10 159347 123242 10 209065 63110 10 251159 45081 10 426688 45862 10 27958 18684 10 332091 4883 10 123690 1286 10 287322 575 10 135302 1671 10 308539 450 10 296918 53 10 448480 207 10 334244 2 10 122933 1 10 373597 2 10 329552 2 10 371316 1 10 219194 3 10 117509 1 10 147...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 22 lines
Test #14:
score: 0
Accepted
time: 962ms
memory: 53860kb
input:
21139 219315 5000 486799 146895 5000 11917 27333 5000 437401 104559 5000 336669 954 5000 7873 572 5000 414204 150 5000 436939 105 5000 188387 52 5000 445845 15 5000 316389 32 5000 289763 12 5000 189983 4 5000 414712 1 5000 243662 1 5000
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 15 lines
Test #15:
score: 0
Accepted
time: 976ms
memory: 99548kb
input:
176736 412451 1
output:
2474701
result:
ok single line: '2474701'
Test #16:
score: 0
Accepted
time: 273ms
memory: 59016kb
input:
2 500000 2
output:
14276189
result:
ok single line: '14276189'
Test #17:
score: 0
Accepted
time: 247ms
memory: 59292kb
input:
2 499999 3
output:
0
result:
ok single line: '0'
Test #18:
score: 0
Accepted
time: 789ms
memory: 120324kb
input:
3 500000 2
output:
124
result:
ok single line: '124'
Test #19:
score: 0
Accepted
time: 784ms
memory: 120192kb
input:
3 499999 3
output:
15279
result:
ok single line: '15279'
Test #20:
score: 0
Accepted
time: 714ms
memory: 120100kb
input:
4 500000 2
output:
2538
result:
ok single line: '2538'
Test #21:
score: 0
Accepted
time: 693ms
memory: 120340kb
input:
4 499999 3
output:
0
result:
ok single line: '0'
Test #22:
score: 0
Accepted
time: 1264ms
memory: 120124kb
input:
500000 499999 2
output:
3
result:
ok single line: '3'
Test #23:
score: 0
Accepted
time: 1279ms
memory: 120336kb
input:
500000 499999 3
output:
0
result:
ok single line: '0'