QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#342985#1003. 快速 AND 卷积luanmenglei#100 ✓24ms10780kbC++171.3kb2024-03-01 20:43:202024-03-01 20:43:22

Judging History

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

  • [2024-03-01 20:43:22]
  • 评测
  • 测评结果:100
  • 用时:24ms
  • 内存:10780kb
  • [2024-03-01 20:43:20]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

namespace SOL {

using i64 = long long;
void debug(const char *msg, ...) {
#ifdef CLESIP
    va_list arg;
    static char pbString[512];
    va_start(arg,msg);
    vsprintf(pbString,msg,arg);
    cerr << "[DEBUG] " << pbString << "\n";
    va_end(arg);
#endif    
}
template<typename T, typename L>
bool chkmax(T &x, L y) { if (x < y) return x = y, true; return false; }
template<typename T, typename L>
bool chkmin(T &x, L y) { if (y < x) return x = y, true; return false; }

const i64 P = 998244353;
const int N = 20;
int n;
i64 a[1 << N], b[1 << N];

void mod(i64 &x, i64 y) {
	x += y;
	if (x >= P)
		x -= P;
}

void solve() {
	cin >> n;
	for (int i = 0; i < (1 << n); i ++)
		cin >> a[i];
	for (int i = 0; i < (1 << n); i ++)
		cin >> b[i];
	for (int i = 0; i < n; i ++)
		for (int S = 0; S < (1 << n); S ++)
			if (S >> i & 1)
				mod(a[S - (1 << i)], a[S]), mod(b[S - (1 << i)], b[S]);
	for (int S = 0; S < (1 << n); S ++)
		a[S] = a[S] * b[S] % P;
	for (int i = 0; i < n; i ++)
		for (int S = 0; S < (1 << n); S ++)
			if (S >> i & 1)
				mod(a[S - (1 << i)], P - a[S]);
	for (int S = 0; S < (1 << n); S ++)
		cout << a[S] << " ";
}

}
int main() {
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	SOL::solve();
	return 0;
}

詳細信息

Test #1:

score: 10
Accepted
time: 24ms
memory: 10780kb

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 11...

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 8401393...

result:

ok 131072 numbers

Test #2:

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

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...

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 7123...

result:

ok 131072 numbers

Test #3:

score: 10
Accepted
time: 17ms
memory: 6772kb

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...

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 73859...

result:

ok 131072 numbers

Test #4:

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

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 127...

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 207...

result:

ok 131072 numbers

Test #5:

score: 10
Accepted
time: 16ms
memory: 10016kb

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 ...

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 2...

result:

ok 131072 numbers

Test #6:

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

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...

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 68...

result:

ok 131072 numbers

Test #7:

score: 10
Accepted
time: 17ms
memory: 10768kb

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...

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 38220...

result:

ok 131072 numbers

Test #8:

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

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 ...

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...

result:

ok 131072 numbers

Test #9:

score: 10
Accepted
time: 24ms
memory: 10616kb

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 811...

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 9...

result:

ok 131072 numbers

Test #10:

score: 10
Accepted
time: 24ms
memory: 10604kb

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 7...

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 56...

result:

ok 131072 numbers