QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#319983 | #2488. Diophantine Equation | rgnerdplayer | AC ✓ | 47ms | 3828kb | C++20 | 2.2kb | 2024-02-03 13:09:36 | 2024-02-03 13:09:36 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int t;
cin >> t;
auto solve = [&]() {
// a + b, a^2 - ab + b^2
// 3ab
i64 n;
cin >> n;
vector<pair<i64, int>> factors;
{
i64 x = n;
for (i64 i = 2; i * i <= x; i++) {
if (x % i == 0) {
factors.emplace_back(i, 0);
while (x % i == 0) {
x /= i;
factors.back().second += 2;
}
}
}
if (x > 1) {
factors.emplace_back(x, 2);
}
}
i64 x = -1, y = -1;
constexpr i64 V = 1e6;
auto rec = [&](auto rec, int i, i64 sum) -> void {
if (sum >= 2 * V) {
return;
}
if (i == int(factors.size())) {
i64 pro = sum * sum - n * n / sum;
if (pro <= 0 || pro % 3 != 0) {
return;
}
pro /= 3;
i64 D = sum * sum - 4 * pro;
if (D < 0) {
return;
}
i64 sq = sqrtl(D);
if (sq * sq != D) {
return;
}
i64 a = sum - sq, b = sum + sq;
if (a <= 0 || a % 2 != 0 || b % 2 != 0) {
return;
}
a /= 2, b /= 2;
assert(a * a * a + b * b * b == n * n);
x = a, y = b;
return;
}
for (int j = 0; j <= factors[i].second; j++) {
if (j > 0) {
sum *= factors[i].first;
}
rec(rec, i + 1, sum);
}
};
rec(rec, 0, 1);
if (x == -1) {
cout << "impossible\n";
} else {
cout << x << ' ' << y << '\n';
}
};
while (t--) {
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3620kb
input:
4 1 2 3 4
output:
impossible impossible 1 2 2 2
result:
ok correct (4 test cases)
Test #2:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
1000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101...
output:
impossible impossible 1 2 2 2 impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible 4 8 impossible impossible impossible impossible impossible im...
result:
ok correct (1000 test cases)
Test #3:
score: 0
Accepted
time: 1ms
memory: 3820kb
input:
1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 ...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible 65 91 impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossib...
result:
ok correct (1000 test cases)
Test #4:
score: 0
Accepted
time: 12ms
memory: 3504kb
input:
1000 247757905 960577391 178241140 964243209 972616426 907455375 140900159 140627928 402419086 298350695 631415660 417560469 561576156 905633503 449222404 662125716 507262669 255811119 902129591 734930237 340169307 197443442 758463177 544759251 702352772 356479786 253292154 454046907 14403458 225277...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #5:
score: 0
Accepted
time: 1ms
memory: 3596kb
input:
1000 4644 525 4 312 784 1225 1225 8281 6292 375 9310 6877 6696 1344 6292 8424 5368 10125 1183 4644 9765 8775 9765 1029 5368 10088 1536 1323 648 6696 9548 6776 3993 648 1225 9747 6292 9464 1029 168 1536 8232 8281 4200 192 2888 375 2646 312 1323 1372 4536 1029 2646 10088 3993 4536 8232 312 4563 24 518...
output:
183 249 10 65 2 2 2 46 28 84 70 105 70 105 273 364 154 330 25 50 329 371 184 345 78 354 88 104 154 330 18 414 224 260 225 450 65 104 183 249 242 433 330 345 242 433 49 98 224 260 228 448 64 128 84 105 36 72 78 354 34 450 132 352 121 242 36 72 70 105 57 456 154 330 260 416 49 98 22 26 64 128 196 392 ...
result:
ok correct (1000 test cases)
Test #6:
score: 0
Accepted
time: 1ms
memory: 3604kb
input:
1000 9747 32 4 525 8281 6776 4225 8232 4704 2496 375 8424 2646 3993 3993 648 648 8281 9765 4536 6292 4200 4 1183 2048 4225 4225 98 6877 1536 1261 10125 1261 10088 256 168 525 1372 10125 9800 5324 6877 648 6776 8112 2916 6591 6877 671 81 9310 3993 1536 2646 2187 2646 1824 1824 1344 8112 5368 847 168 ...
output:
57 456 8 8 2 2 10 65 273 364 132 352 65 260 196 392 56 280 8 184 25 50 18 414 63 189 121 242 121 242 36 72 36 72 273 364 242 433 198 234 154 330 40 260 2 2 65 104 128 128 65 260 65 260 7 21 184 345 64 128 57 112 225 450 57 112 228 448 32 32 22 26 10 65 98 98 225 450 280 420 242 242 184 345 36 72 132...
result:
ok correct (1000 test cases)
Test #7:
score: 0
Accepted
time: 4ms
memory: 3616kb
input:
1000 22936119 54583200 197197560 36794880 293559552 171500 29110392 8128512 14175000 766584 37028375 65969582 7471104 322552989 23641797 33116216 2984709 118716416 56689952 42273035 290304000 44325144 182952000 10091928 40265652 227952900 2584320 59768832 10698240 95067648 39000000 266149608 1925586...
output:
38809 77618 66120 139080 230594 298606 75296 97504 199584 427680 2450 2450 31382 93466 8064 40320 9000 58500 4836 7800 72625 99600 11501 163247 11264 37888 107640 468441 39601 79202 52292 98432 15457 17342 154336 218400 117128 117128 92316 100009 316800 374400 21744 125028 118800 316800 28136 43012 ...
result:
ok correct (1000 test cases)
Test #8:
score: 0
Accepted
time: 11ms
memory: 3760kb
input:
1000 4659790 756706755 892782275 5073646 560405840 301378997 703288676 878602620 260517179 695068338 363950680 78798246 521001501 120843464 542026170 716387002 597022800 232311387 999324712 515863465 10772182 606655041 965218020 513679921 926529099 579707361 492672482 807115468 407041680 115903784 2...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #9:
score: 0
Accepted
time: 11ms
memory: 3536kb
input:
1000 74085232 438931830 232448941 701818317 32154723 194890998 442009850 223149192 586775286 81972070 406650099 180420864 589967418 466343846 70488633 564320379 592790935 420084347 161176399 780119081 93301185 777537511 50293237 91301813 357341165 181837851 210338703 82136693 626448529 318597694 674...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #10:
score: 0
Accepted
time: 11ms
memory: 3700kb
input:
1000 149529727 532537074 540218763 337089971 895728366 984280909 889037403 89133487 492385379 948103763 156330648 977670051 46436989 533988185 310498340 605368806 224497164 670604214 256396846 154827292 732145510 217800547 857192275 71225343 984736122 241891024 880608957 431838058 830971153 56100458...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #11:
score: 0
Accepted
time: 11ms
memory: 3600kb
input:
1000 829498612 419176066 348105251 576495408 791966078 456890234 38388898 501283107 534413190 673568033 962468095 696320911 797809469 423608094 175833538 128887066 651155288 491244328 195452313 381112758 443699912 743914232 677398193 598451992 552032668 997294852 981883093 587911607 104645549 299688...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #12:
score: 0
Accepted
time: 12ms
memory: 3612kb
input:
1000 832532703 931734901 52618985 663967634 155815551 795421942 692889761 591919395 710665889 701119466 236886042 723567388 717630678 536307451 353077852 194361659 751711096 301902698 468567491 791941313 126293332 550370588 664917510 86524251 505201207 402703936 341263859 923551059 638071102 8592249...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #13:
score: 0
Accepted
time: 13ms
memory: 3536kb
input:
1000 356987856 725606135 81168215 553014597 848176887 48977207 82876483 273081810 782507352 444243076 980578298 675745698 436732998 590101594 616828556 917408805 581998157 64437687 660468105 99392050 915758344 617244941 575612231 98798559 393212398 37550214 634921787 868697586 987382663 360416467 40...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #14:
score: 0
Accepted
time: 12ms
memory: 3628kb
input:
1000 377873513 49486553 975739372 663689755 441052587 259609372 911537594 802211147 631333550 99608010 19284118 376882787 635753005 755236099 856553163 373074134 311297735 294801283 332372147 215438965 885151424 406044496 974664883 708556628 739470513 666503845 102329511 856563226 370341969 73225851...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #15:
score: 0
Accepted
time: 11ms
memory: 3616kb
input:
1000 306792974 373882252 979281347 57507797 834364016 383439209 225915528 865334138 464462735 996401667 960728815 224927504 152168804 589420658 32214993 880500645 488756214 588758993 716599157 609100067 628791020 902557886 154317628 495399170 158140712 109906436 728598944 560001820 116920265 1405292...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #16:
score: 0
Accepted
time: 12ms
memory: 3536kb
input:
1000 114065546 943881868 674336930 289433500 328318660 479949429 537612724 282503464 588639103 584864706 12986246 127057356 827305473 361700525 521959392 71259392 630197390 614424158 265162644 221602799 131958650 53669963 208272578 609836110 469910984 346913663 979671424 437091110 834796390 67720849...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #17:
score: 0
Accepted
time: 6ms
memory: 3584kb
input:
1000 94613768 865989019 289530920 416522245 79536964 615264952 597771631 30640680 763080294 482609488 1643880 897215216 73670709 732058095 264155500 387737792 639166833 134181860 15876000 426334142 620935638 867466003 111894738 232031840 363785462 322588050 138557039 238314144 282732350 619481207 21...
output:
55024 206340 impossible impossible impossible 61370 182666 impossible impossible 36036 96264 impossible impossible 772 13928 impossible 121745 153586 impossible 94050 410050 347904 476560 impossible impossible 12600 63000 impossible impossible impossible impossible impossible impossible impossible i...
result:
ok correct (1000 test cases)
Test #18:
score: 0
Accepted
time: 9ms
memory: 3540kb
input:
1000 70019040 445644040 161631442 27539784 595698772 362551228 932480812 52802635 465173765 14016566 29302368 904571136 430526760 287691495 125043776 242109000 312694235 383669077 398236937 80704 924886888 45235099 87234174 789602260 705200528 42795105 747302717 13561648 38864924 110132928 881215825...
output:
69244 165956 impossible impossible 36036 89280 impossible impossible impossible impossible impossible impossible 6532 95036 impossible impossible 199738 421337 79872 247312 148050 381150 62769 460306 385784 447785 impossible 912 1792 impossible impossible impossible impossible impossible 16426 12224...
result:
ok correct (1000 test cases)
Test #19:
score: 0
Accepted
time: 15ms
memory: 3500kb
input:
1000 1000000000 999999999 999999998 999999997 999999996 999999995 999999994 999999993 999999992 999999991 999999990 999999989 999999988 999999987 999999986 999999985 999999984 999999983 999999982 999999981 999999980 999999979 999999978 999999977 999999976 999999975 999999974 999999973 999999972 9999...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (1000 test cases)
Test #20:
score: 0
Accepted
time: 47ms
memory: 3776kb
input:
3000 1000000000 999999999 999999998 999999997 999999996 999999995 999999994 999999993 999999992 999999991 999999990 999999989 999999988 999999987 999999986 999999985 999999984 999999983 999999982 999999981 999999980 999999979 999999978 999999977 999999976 999999975 999999974 999999973 999999972 9999...
output:
impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible impossible imp...
result:
ok correct (3000 test cases)
Test #21:
score: 0
Accepted
time: 27ms
memory: 3828kb
input:
3000 630577376 971315648 219486861 122842167 33422116 829547701 215103567 682243813 495679826 277025127 47805122 53379456 602605537 774607710 165209625 544067179 69450591 258966643 307995801 175934892 331135106 355876290 178229107 380076017 317289506 146089500 559655507 172974204 19652000 867272160 ...
output:
impossible impossible 273240 302841 impossible 21398 103454 impossible 102442 356201 impossible impossible impossible impossible 97784 124168 impossible impossible 53865 300510 impossible 132097 136052 impossible impossible 7658 313978 impossible impossible impossible impossible impossible 70975 275...
result:
ok correct (3000 test cases)
Test #22:
score: 0
Accepted
time: 16ms
memory: 3528kb
input:
3000 143493168 218549097 17732389 237663602 97226325 91714560 9084426 316324008 27722250 139968000 23774016 288294600 290136060 4682688 12857208 82689800 26891200 280973760 106833867 15636615 17322498 149398095 303595656 344935500 31853196 434617407 18626517 28227000 131274675 91378125 322859628 354...
output:
58786 273182 6777 362826 32552 65417 98109 381535 32490 211185 118064 189136 1547 43537 356004 380160 8325 91575 129600 259200 42560 78736 321860 367840 250686 409014 13456 26912 16240 54404 70730 186470 54880 82320 251024 398176 108241 216482 14294 62281 50031 55917 206426 238249 138788 447304 3125...
result:
ok correct (3000 test cases)