QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#9682 | #1004. 快速 XOR 卷积 | Lenstar# | 100 ✓ | 33ms | 9860kb | C++11 | 1.3kb | 2021-04-09 10:41:59 | 2021-12-19 11:37:28 |
Judging History
answer
#include <bits/stdc++.h>
const int N = 1e6 + 10, mod = 998244353;
inline int read()
{
int x = 0, f = 0; char ch = getchar();
while (!isdigit(ch)) f |= ch == '-', ch = getchar();
while ( isdigit(ch)) x = x * 10 + ch - '0', ch = getchar();
return f ? -x : x;
}
inline int chk(int a) { return a >= mod ? a - mod : a; }
inline void upd(int &a, int b) { a = a + b >= mod ? a + b - mod : a + b; }
int a[N], b[N];
inline void XOR(int *a, int n, int x = 0)
{
int w = 1 << n;
for (int l = 2; l <= w; l <<= 1)
for (int i = 0, m = l >> 1; i < w; i += l)
for (int j = 0; j < m; ++j)
{
int p = a[i + j], q = a[i + j + m];
a[i + j] = chk(p + q), a[i + j + m] = chk(p - q + mod);
if (x)
{
a[i + j] = 1LL * a[i + j] * (mod + 1) / 2 % mod;
a[i + j + m] = 1LL * a[i + j + m] * (mod + 1) / 2 % mod;
}
}
}
int main()
{
int n = read();
for (int i = 0; i < (1 << n); ++i) a[i] = read();
for (int i = 0; i < (1 << n); ++i) b[i] = read();
XOR(a, n), XOR(b, n);
for (int i = 0; i < (1 << n); ++i) a[i] = 1LL * a[i] * b[i] % mod;
XOR(a, n, 1);
for (int i = 0; i < (1 << n); ++i) printf("%d ", a[i]);
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 10
Accepted
time: 23ms
memory: 9804kb
input:
17 12971 87517 21493 129172 55449 49056 84226 60548 107778 94553 94762 35834 62355 103942 1589 56049 64049 52657 13647 458 32499 10726 32746 16451 97495 80824 45233 13117 37142 117070 44795 1503 39107 17458 113346 77453 67829 98425 107567 67863 109865 88834 54880 108007 112287 6219 121301 115460 114812 122542 67671 85081 409 32316 115756 129872 81171 127 27466 23240 91802 62754 118624 70875 5618 98084 49263 78697 5998 111009 52 54522 74888 1669 13909 73105 113142 91539 20237 17911 24947 129644 8...
output:
698812707 879431404 57587544 880107640 670474848 175214704 163777329 686637069 688993947 409351023 14902476 280946462 399724301 270736419 624157182 392344757 881378375 20764504 614078834 433638854 571162569 956897920 95316858 655755985 390194382 652897672 194064986 38083479 611721046 635144335 689885334 597726687 306592007 700950198 908524345 252975508 180019950 825607970 380780369 674590477 372210323 386134853 817779413 31093001 952570159 648487584 416126180 217020832 52551689 768000828 3615972...
result:
ok 131072 numbers
Test #2:
score: 10
Accepted
time: 21ms
memory: 6152kb
input:
17 60681 43091 80828 84253 116262 125738 38458 47302 7816 48510 1739 126330 56987 29628 19300 58590 58805 84834 37607 85108 42824 104724 53232 73419 88929 120013 17556 126592 77200 108866 80463 19973 54540 75236 4447 34141 55852 83199 35626 15859 34602 87863 95828 24276 46221 28871 102512 130109 95270 95315 14401 91243 104844 75995 62412 101389 7032 111611 101020 36915 20649 52153 27016 90724 111231 102059 121770 91549 24647 75107 78998 24828 101090 83098 63053 12298 78176 105413 124123 13240 10...
output:
656961539 191342876 165310360 284264386 2063511 392758092 290561687 846911803 819305231 140018463 96367360 726904465 29157405 989998884 728101838 665462778 287997742 813352308 973383120 853361397 526520923 931854415 81780556 196320100 772196423 467957136 379439235 464122830 766578512 360687959 958276611 37975658 641733819 943766591 411014806 328082602 623662748 792703510 435873589 801637329 212704075 755814028 499936961 715895502 989060358 940989313 545524623 814856629 948552457 310571611 633282...
result:
ok 131072 numbers
Test #3:
score: 10
Accepted
time: 22ms
memory: 6192kb
input:
17 80123 95971 37761 56275 108050 26373 101243 111039 61518 53462 50199 89421 4407 130890 86035 19719 69203 123363 107339 118003 91310 73762 91912 103483 104511 19917 119315 124430 97370 54405 39124 104828 123881 85074 38405 69557 19382 128321 55962 38389 41105 43537 128932 29395 120164 27652 121841 96667 57605 17956 319 69577 111027 81942 69266 130386 92687 55356 87896 116436 18797 98953 8616 97728 40243 41400 73473 74828 128555 105460 42034 16587 6945 86033 78480 52963 928 74938 95059 49145 80...
output:
782515307 59754990 157284274 403743047 701679049 195025449 265910369 616140956 121613242 365652331 322246932 126221501 36048587 597597042 422750667 35993519 687774431 611061259 694177084 912210837 338687661 106656171 964513206 786743443 244048380 236283673 437606010 479760310 923948847 762647848 649573495 863393676 832392440 910101816 231954291 591820747 284126390 483546524 661179375 331295742 335459181 390776587 273736056 122074722 789428604 460489450 997534381 96598543 382384597 287690783 5106...
result:
ok 131072 numbers
Test #4:
score: 10
Accepted
time: 33ms
memory: 8164kb
input:
17 108939 64572 52175 61053 115827 90090 90712 71972 57340 96612 130277 95021 31140 116050 43691 43802 52242 32913 63231 50123 11700 84047 77730 7205 3920 97931 75125 22985 7819 85108 121546 118894 104930 129850 8015 29275 103196 124506 38732 76256 59318 70181 19572 49661 38361 304 125641 52720 10574 61274 23192 38342 105191 68082 126064 82924 93861 1270 25594 100885 61241 23513 94278 38583 37374 82128 53259 33411 88879 69946 73316 50036 127387 41985 107015 94627 86009 56729 92034 10399 56176 46...
output:
961165394 260240698 700781509 466366496 219224040 594030174 746899990 350429068 625688493 288240409 305748764 319117574 457149839 957412221 633963457 162271461 101225900 375608953 712934099 674372604 846817164 982227663 715284399 256869729 357123254 465078096 501357672 420191231 662617810 606719268 685852127 686667887 452542760 966133913 807287971 651075078 141441427 882461190 201501437 891154797 372272484 88232672 773874105 74600989 965897520 408374662 995017263 764048748 831061000 61310453 371...
result:
ok 131072 numbers
Test #5:
score: 10
Accepted
time: 32ms
memory: 9860kb
input:
17 31774 67725 65380 69381 126096 130251 17026 66144 86636 1003 38183 44160 72510 58745 102958 63604 117646 67739 41196 78052 55940 36095 12434 123628 37896 49214 34244 75942 21320 63455 66385 97929 104259 92206 78015 38177 97295 89357 41766 72056 46879 97478 100720 15389 12924 92934 47851 42725 85366 76958 75340 114832 118241 640 86318 108354 20550 4527 76449 49342 29272 35483 29313 50993 2976 57558 97501 333 50769 81527 99550 97191 39230 15085 86969 23039 91729 74809 2452 130924 39958 9209 991...
output:
215504465 940019169 686488767 413058270 861526572 8644948 809507011 70813699 617011313 615984789 145532624 167137408 33264860 149682274 583720736 412535531 817920773 560112088 156250746 964945182 55061380 20405411 584801738 347793374 867198551 696163198 897425860 739471072 368629825 650716297 825540356 373677019 582494614 177326343 135327311 5487704 712136615 468115172 548317060 229244945 703441607 937147252 923059368 994018877 193056284 616244727 628835878 956104229 30314442 166142136 417424633...
result:
ok 131072 numbers
Test #6:
score: 10
Accepted
time: 22ms
memory: 6152kb
input:
17 128832 40041 41368 104210 74000 120943 91735 94779 127869 68612 110143 104621 92991 72979 122777 39422 128799 14898 105541 57692 101463 66816 115636 109294 83181 7187 79264 1928 102559 76557 23190 105321 63523 17794 6806 50895 77097 106912 45722 111347 6619 65559 109836 115427 4879 88308 87890 98381 54116 8012 99923 42468 43145 4217 10797 113088 102799 81841 60029 115564 73741 83637 87392 23930 103356 107520 115593 40888 32376 48204 120769 115557 82670 58413 48107 62253 40309 44169 109315 331...
output:
479138917 70320365 773019816 959075597 291034365 766268126 660353955 806500510 118307670 293980210 243443217 262881115 920878133 67759631 794261248 581270968 856016102 797019679 569821826 63836068 418239811 927356048 456588099 546370517 432473877 466488163 769277941 710146142 133660925 691608519 819339426 531091600 790804110 699225606 985328367 464515662 718806076 49765655 604558122 104693483 708510472 613067494 993501372 710592149 309765191 400377838 717136085 936595826 925303627 156711250 8574...
result:
ok 131072 numbers
Test #7:
score: 10
Accepted
time: 29ms
memory: 6096kb
input:
17 72783 6091 19840 63551 18810 111065 21841 38393 123524 57925 14635 31627 86050 58432 43867 5202 47233 106182 34732 90077 9315 127975 54930 104606 79356 37755 73553 112255 98273 54764 5292 60613 23374 113347 4995 114800 58352 85709 81020 19773 102919 31355 84369 103097 2001 37268 109920 95173 94045 86421 21665 21900 127278 88164 78515 92227 766 96023 13503 128961 88406 32556 39206 14117 69489 94251 130081 50643 36089 81175 87551 106117 29308 87403 59081 123406 29624 77098 19638 3441 19527 4388...
output:
771950709 501825070 208440944 130242096 642091983 33366622 312787960 426621943 418787392 608292545 643945612 855871494 395489447 868959857 819867939 535671691 978094952 150230130 853012115 748655456 949073672 184763366 680213708 254358884 345216966 385732365 550972495 184364441 47254546 292690376 819556512 881746260 608553479 361815835 498697430 939767524 279227062 776196192 95770281 243179072 442801257 441055075 959049538 349526618 969793131 21531375 162248168 808781028 645405732 842996888 1093...
result:
ok 131072 numbers
Test #8:
score: 10
Accepted
time: 24ms
memory: 6068kb
input:
17 46309 89219 114374 41892 49238 10478 107055 98444 47093 50979 97846 74576 92885 79209 118666 19635 3460 58696 23156 5848 12493 76587 64564 6789 3575 79063 101453 5388 61638 71697 19932 68093 48232 56859 121208 46261 6897 87013 9732 64635 66395 107851 392 33439 85489 6382 4671 9866 56412 20250 82261 425 113411 91114 125695 108762 5060 81331 93846 18656 6968 55901 41116 26877 57320 77183 109413 98925 51505 61375 35090 75157 49722 65725 25403 95760 39307 11987 55675 77804 121303 24315 19056 1089...
output:
757138461 421958338 795055358 492022171 966136665 429209847 695798862 303639465 864678022 755429467 472392341 734741924 872635059 802886336 651459791 107491848 686393709 567260074 634743412 892057031 65023847 379157398 649817612 687719402 638779634 731625549 350976034 717601333 235706087 604495771 826706519 572166193 73920907 625947387 927275329 315707218 246554342 150744665 356386744 229549861 320281945 744625367 646627129 144131092 126453476 160045587 260157003 844596874 320433818 515713963 25...
result:
ok 131072 numbers
Test #9:
score: 10
Accepted
time: 25ms
memory: 8156kb
input:
17 27754 86939 42679 63610 33946 125278 110623 12553 116511 44588 60498 37304 125848 56270 76687 65142 50934 72435 97308 50362 110254 39337 53832 77230 2666 119442 61718 104884 64126 39964 59510 52802 98741 98026 6032 2857 64718 69433 75089 125294 122386 19656 126033 63680 72188 36218 130484 49102 99094 32567 26853 85434 14363 99224 108609 63839 115730 121987 55796 14646 3554 83728 124026 27664 20136 34879 17442 91976 73093 36306 81093 39887 105039 72984 93288 124876 77489 107337 10583 122113 87...
output:
276986593 386312328 329531771 758783940 776851621 393448934 362104974 975377554 855214600 978286309 14947657 277857584 638586409 411161985 413062551 487258235 554965840 233408040 436904961 476492629 323538061 74605679 372965049 121625315 997502545 25957327 334375188 234026758 553269890 615277946 412670080 35801333 671320956 43740428 502286540 698198112 961384799 496166382 888256797 268029835 686309164 178055661 374977093 715187657 646368146 910010601 827069928 911034822 404969765 573661830 42422...
result:
ok 131072 numbers
Test #10:
score: 10
Accepted
time: 30ms
memory: 6128kb
input:
17 92675 49618 93296 44550 86315 1135 84572 125202 81170 10398 76335 103794 63635 74494 58874 87903 52174 110193 87955 33432 22146 73241 83004 52072 84882 21505 33617 5880 81903 31364 98529 93950 74497 44469 15897 59590 95509 71 125003 14795 122158 130832 80779 17994 110212 106866 80913 40081 106507 34154 23488 63996 42909 78124 21748 67129 79270 119477 4917 91146 52039 10274 19242 41890 18747 8189 121932 10449 50488 19652 76125 129229 76745 43997 75900 17561 88973 120390 96705 114572 95826 7154...
output:
774498015 997893090 832325651 185130273 194631166 417695999 693956616 374506161 339566919 535586811 59420361 706098805 818232480 89522179 500392232 184806171 843431292 805631333 68096380 329064523 259059731 886166493 16443555 488269350 239942520 867417992 923586598 25546923 389761516 867860296 35936027 46190147 903684475 358780323 832461890 172962673 911828858 820680116 52193257 102084947 943949819 777347461 330709274 131001671 229623951 780717885 866912365 539332544 684411610 148933599 43135667...
result:
ok 131072 numbers