QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#9679#1003. 快速 AND 卷积Lenstar#100 ✓31ms9856kbC++111002b2021-04-09 10:39:232021-12-19 11:37:10

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2021-12-19 11:37:10]
  • 评测
  • 测评结果:100
  • 用时:31ms
  • 内存:9856kb
  • [2021-04-09 10:39:23]
  • 提交

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 void upd(int &a, int b) { a = a + b >= mod ? a + b - mod : a + b; }

int a[N], b[N];

inline void AND(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)
                upd(a[i + j], x ? mod - a[i + j + m] : a[i + j + m]);
}

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();
    AND(a, n), AND(b, n);
    for (int i = 0; i < (1 << n); ++i) a[i] = 1LL * a[i] * b[i] % mod;
    AND(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: 17ms
memory: 8092kb

input:

17
42662 3827 76545 108831 25313 27266 67677 49044 32147 52358 110136 98785 109292 47880 104604 79427 21356 69205 91120 102276 66500 21270 57642 6392 16089 58759 83369 48885 44087 13580 32568 72525 50203 2175 32131 98566 104956 97622 122591 59620 130179 77529 90491 40080 17249 29852 124089 121649 116269 40777 128212 19212 44813 27548 114631 106133 11594 35038 67303 83644 46281 81233 70567 105826 98694 45333 20472 13554 66435 16495 123127 11888 65988 18506 129749 120585 58514 110353 8526 23228 49...

output:

187092 174739061 141124232 860992119 269334782 783544464 69171087 15526024 357775339 993223224 457105215 851479783 270205742 974729024 311003852 756442378 102603369 6609841 312645046 784421500 842679797 274269825 796900543 650125486 924389755 128955947 796744538 703430848 864069915 863243699 84013939 536633219 555261342 321382183 44666302 502448793 308843584 580387424 773618717 166900321 178106106 315912238 421562569 798157667 695741417 786922353 231194158 518169675 957804402 597226264 861445471...

result:

ok 131072 numbers

Test #2:

score: 10
Accepted
time: 12ms
memory: 9692kb

input:

17
22855 107434 52803 90229 89505 80495 42180 9475 32330 74086 32412 21027 18538 15791 67485 59626 36435 121278 41301 7686 46310 63627 64081 75757 119351 53397 75140 46668 57425 106397 122163 119200 126128 114872 89333 109457 122327 123135 105915 12651 29868 67257 34126 62215 49248 27812 39497 24815 32278 99125 19337 79078 81623 38325 16988 15994 117950 89951 73416 50597 103592 49706 62692 126673 38157 67473 88905 20784 55044 84518 83145 3473 94422 24360 124940 14179 46166 32986 100547 127214 47...

output:

783136516 738139260 9697070 350045858 284782382 656456346 192643000 311707326 577505038 315040162 777656185 869641717 267435846 125576139 348173201 582580013 430204376 12802069 736727875 812806993 249710569 93400484 716761695 699181852 270719911 940423731 223635059 353142613 798334843 249363937 712300161 148974716 901139767 660410691 893551889 395578175 862140848 313855139 277886370 962904169 919570028 176131490 531838510 754844953 978503159 774375907 60587883 905219154 478625123 518962571 93260...

result:

ok 131072 numbers

Test #3:

score: 10
Accepted
time: 20ms
memory: 6104kb

input:

17
70272 97050 8767 65864 32849 88052 94450 76546 28753 125164 104071 27376 108394 48523 92447 64823 83816 7335 96301 110066 90946 80030 69811 104000 26485 121439 88815 55834 65886 7589 19851 27739 79071 114263 59112 15156 16335 34678 48236 78364 58136 31664 51214 71751 20112 46330 75737 124398 8424 4807 103488 90270 109925 67943 2253 110744 34305 14531 6929 32374 69975 55756 43101 523 90602 19808 4389 58533 33078 68889 54965 103483 42215 31920 55957 13969 33700 29045 16626 14272 32552 79749 168...

output:

652790520 881719211 868176025 572053307 955717573 735754828 384413839 966367542 111874706 85528678 774867820 291405062 273777139 29040948 168192747 756054755 537207894 212031117 640133052 923324877 461501244 78051525 739663823 172940418 80315186 880088254 942268925 662706303 27530358 291985190 738595719 300614408 587218699 654457255 335550237 718941848 565376232 249713318 678892354 572033196 833193306 207768583 40754637 28430278 597913837 417564839 274749070 765957443 361596693 583426772 1291715...

result:

ok 131072 numbers

Test #4:

score: 10
Accepted
time: 31ms
memory: 6200kb

input:

17
37803 53349 7475 14815 37920 63423 130725 10105 98692 7060 112281 81068 119521 8493 102633 81243 103185 8430 126740 15149 11983 109796 55656 77806 84560 67646 81765 98052 43438 73472 20333 31261 129649 26861 77960 128528 15020 76695 92482 121232 119532 29122 97453 114257 8630 77944 85108 8439 127001 63086 6937 11753 4516 79784 34276 123226 67432 68582 85006 58833 22697 60712 120161 69431 87934 30176 63383 126412 111909 92887 101424 129151 43916 128340 74904 2662 26729 17337 107601 85179 90885...

output:

114888495 811937879 660931470 931076699 541840738 741043610 130679148 280529419 493454280 377294431 829717916 215950294 166954850 598626896 570937115 247586423 182263656 62568545 191328823 586237460 532191787 67461890 306634944 652448755 983254393 326168928 695476251 469134536 96701858 724692004 207784635 21561749 826983819 302965237 180995855 181987647 816244711 731296474 153619148 13255649 893879887 238960126 54591368 296577117 702394692 953991153 537390110 193862629 642616960 860748930 836831...

result:

ok 131072 numbers

Test #5:

score: 10
Accepted
time: 19ms
memory: 6012kb

input:

17
97311 126323 42986 21328 28294 63879 55749 106904 35083 12328 51989 122901 49683 90489 54771 7449 10577 3062 14365 42158 105598 102787 1697 53360 23897 105575 42515 69564 13588 116076 96290 46242 53478 77359 54419 124940 45908 41343 117697 53169 63073 70519 18594 49893 111926 109536 118152 63292 129044 69394 92151 26549 56023 15354 26291 110351 4781 83390 104648 127075 51350 91714 63455 687 87227 25769 42622 106747 41587 129074 24871 115060 124265 27550 78015 95051 89689 49102 52554 40043 548...

output:

529778873 442004829 699585132 475230286 127571570 311194301 270220041 469675707 394442968 520038510 381027618 65456379 450182206 634214127 462457146 777633299 614623344 661173888 827030392 723946846 256243166 604028739 439916795 325725791 466090809 880702672 708655802 852597751 302336688 206035244 201222507 957123604 652842718 126172934 567775845 276344400 214119499 597620541 415422513 440612107 687978254 888744408 745063622 960996132 509411039 604168868 912068465 568690325 735194786 413215474 9...

result:

ok 131072 numbers

Test #6:

score: 10
Accepted
time: 25ms
memory: 9856kb

input:

17
80920 106759 88886 68808 40681 129577 739 27081 3168 121135 40411 30502 115288 111815 12729 53417 91480 60238 127638 23069 22086 32285 67565 22414 103053 64282 124164 52161 37589 43113 40328 91740 77627 100006 31526 40265 34460 93412 76512 130221 44900 37645 14939 31417 101787 32864 129218 122519 3496 16198 46823 36969 93472 100915 33941 86661 2616 68508 90262 63986 43263 76034 20040 73924 99225 9371 114716 46882 67701 54829 65790 15982 99711 29533 93050 46041 48489 15073 79134 983 40908 5774...

output:

76249871 688561114 83282165 440158305 765793883 602673636 637631470 970486820 696334879 177898480 444827461 583188134 114094473 634673398 416924233 923291165 904695619 544250807 951162052 217748828 860705666 651656083 626325154 549422528 895944166 843711779 924432980 570297751 512652436 935166233 682928058 101973031 567126219 699420249 586657940 326934766 971980396 522088042 14529686 642516484 642241924 571911746 348739513 547863447 206960499 76147483 767292098 626957164 897611245 518266780 5207...

result:

ok 131072 numbers

Test #7:

score: 10
Accepted
time: 27ms
memory: 7996kb

input:

17
92746 52367 67396 20863 36904 66952 110184 57034 119512 91601 22275 28480 24273 42747 69026 635 29433 110762 96317 112417 44986 95130 31329 114751 1223 68950 22358 72441 56173 58273 76910 73231 91465 15316 109444 53510 17654 109774 3115 106337 74182 50244 2818 67099 21782 107567 35483 69912 57620 112533 52535 108054 88791 48476 106847 122730 27982 12215 107441 126394 71653 46299 7436 14422 28763 71683 107235 27428 100812 120921 2783 97242 30322 81510 50035 91651 37681 102249 99150 38990 12309...

output:

423523969 335275247 61173520 532271139 812088188 711752524 867533074 212900535 512567623 66849043 709782062 847324653 252012090 102087575 866321590 153531313 502714422 541211522 390441842 45061799 500615943 75930224 214555925 568941883 357958826 830497736 667326462 86100053 234144163 756586390 382207982 348282393 357282059 985230381 494340940 725120842 302742358 492177977 111961794 795583850 649760673 744851745 442793342 833359945 837551935 378000212 798404353 164313859 821500669 428395605 69576...

result:

ok 131072 numbers

Test #8:

score: 10
Accepted
time: 23ms
memory: 6012kb

input:

17
42489 34768 108791 39505 26803 69959 95845 12195 25885 130634 19207 20008 64967 38342 66620 62352 22981 123439 114802 50748 57604 1819 51528 56182 85686 35342 46795 9693 97778 67171 110514 130843 103238 110683 24320 121990 23692 1897 88924 88112 123335 7597 129742 81828 117960 24979 125654 24240 18581 91125 83027 52012 26427 39903 120991 127528 83581 121529 19146 19593 23936 7574 87499 63507 57489 101756 97149 99743 94947 125858 126751 34414 3589 123069 66219 120453 37792 25711 12561 108085 5...

output:

296888965 400174685 68162933 408538832 165992548 456750509 30838739 22757924 640640855 755776153 296348622 73502048 521620575 888586907 472852707 164744759 89407492 740988926 994611722 137462378 89693 941408202 965715766 900102313 146678382 831807964 807148862 569060415 974804498 746425925 553747773 808923845 566113782 339572381 994719127 740114543 228884283 411480549 792434864 503710832 203764677 127466484 645560862 152372671 504710830 20446814 305220860 683576925 55577708 398926670 602475431 4...

result:

ok 131072 numbers

Test #9:

score: 10
Accepted
time: 27ms
memory: 6188kb

input:

17
58293 84783 21265 105799 100688 20012 66052 103897 100017 98468 15145 48464 115651 65170 19851 105184 87979 41301 71160 30495 54404 35802 841 12258 36078 82472 123485 105420 110358 9667 96588 100651 116587 118760 123273 32747 104384 110835 104588 51974 16465 6269 68737 91023 14587 77243 30454 81102 102548 11459 104454 35921 6887 48038 125143 24904 16078 16406 47122 124966 56729 102825 13149 16110 120947 31820 58266 52848 56856 32313 8092 124439 71878 122844 128485 63034 38092 76359 24855 5175...

output:

222512293 187272913 390082024 390183952 641122851 228505803 475455647 250174495 273939031 205232183 733762372 349832774 388218519 107252856 706054337 706280885 797486344 913688425 793048710 194021218 643218912 382617461 219252228 818282436 184941100 711413607 75318728 953096335 604682459 756083064 939112577 900262508 310610304 621488128 99441872 833955367 377229609 800624378 201489548 17348537 944053315 891682716 270170587 827163757 60494298 877159702 83476710 885381351 226572646 242193942 61530...

result:

ok 131072 numbers

Test #10:

score: 10
Accepted
time: 22ms
memory: 6112kb

input:

17
83312 18546 48178 122247 38198 20202 19089 40865 101246 4012 108757 8207 10878 29485 28297 106160 109473 129615 117399 124127 50255 64752 125828 75240 106637 6509 128707 10743 59094 39586 18699 12795 71928 18306 103082 108906 63706 94384 119133 105789 82038 11840 61569 72424 124668 83064 112905 71207 101925 4774 27992 98638 15446 102059 57259 6265 106112 100477 108896 97387 122934 129235 4700 31792 121008 115270 127081 75470 70574 74273 119945 50523 97132 89732 86718 30082 125574 109205 80732...

output:

674278798 974625980 256031303 100111195 159092959 760680722 651147266 685366345 81680541 272040664 200896738 222528244 963074556 232557847 305144087 675169049 230745486 258575091 56792705 743886317 531749142 245888972 196085935 932237423 413829760 385325314 143913432 692159540 445506950 579686503 56609852 155635813 25605899 283932994 107799838 506590549 505562378 611566086 290447952 227806301 661735735 811086957 751198309 320902812 321549654 711517025 887781636 212719905 284278164 668346359 4224...

result:

ok 131072 numbers