結果
問題 | No.2409 Strange Werewolves |
ユーザー | tails |
提出日時 | 2023-08-12 00:36:07 |
言語 | C90 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 7,340 bytes |
コンパイル時間 | 806 ms |
コンパイル使用メモリ | 25,216 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-18 20:19:52 |
合計ジャッジ時間 | 1,470 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
5,248 KB |
testcase_01 | AC | 0 ms
5,248 KB |
testcase_02 | AC | 1 ms
5,248 KB |
testcase_03 | AC | 0 ms
5,248 KB |
testcase_04 | AC | 0 ms
5,248 KB |
testcase_05 | AC | 1 ms
5,248 KB |
testcase_06 | AC | 0 ms
5,248 KB |
testcase_07 | AC | 0 ms
5,248 KB |
testcase_08 | AC | 0 ms
5,248 KB |
testcase_09 | AC | 0 ms
5,248 KB |
testcase_10 | AC | 0 ms
5,248 KB |
testcase_11 | AC | 1 ms
5,248 KB |
testcase_12 | AC | 1 ms
5,248 KB |
testcase_13 | AC | 1 ms
5,248 KB |
testcase_14 | AC | 0 ms
5,248 KB |
testcase_15 | AC | 1 ms
5,248 KB |
testcase_16 | AC | 0 ms
5,248 KB |
testcase_17 | AC | 1 ms
5,248 KB |
コンパイルメッセージ
main.c: In function ‘main’: main.c:7:59: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration] 7 | #define wt1(v) ({char wbuf[64],*wp=wbuf+sizeof wbuf;wt(v);write(1,wp,wbuf+sizeof wbuf-wp);}) | ^~~~~ main.c:636:9: note: in expansion of macro ‘wt1’ 636 | wt1(y*fac(x)%MD*inverse(fac(x-z)*fac(z)%MD)%MD*fac(x+y+~z)%MD); | ^~~ main.c:637:9: warning: implicit declaration of function ‘_exit’ [-Wimplicit-function-declaration] 637 | _exit(0); | ^~~~~ main.c:637:9: warning: incompatible implicit declaration of built-in function ‘_exit’ [-Wbuiltin-declaration-mismatch]
ソースコード
#pragma GCC optimize("Ofast") #pragma GCC target("avx2") #define rd_init() char*rp=({char*mmap();mmap(0l,1l<<25,1,2,0,0ll);}) #define rd() ({long _v=0,_c;while(_c=*rp++-48,_c>=0)_v=_v*10+_c;_v;}) #define wt(v) ({ulong _z=v;do*--wp=_z%10+48;while(_z/=10);}) #define wt1(v) ({char wbuf[64],*wp=wbuf+sizeof wbuf;wt(v);write(1,wp,wbuf+sizeof wbuf-wp);}) #define MD 998244353 typedef unsigned long ulong; int inverse(int a){ int b=MD; int u=1; int v=0; int s,t; while(b){ t=a/b; s=b; b=a-t*b; a=s; s=v; v=u-t*v; u=s; } if(u<0){ u+=MD; } return u; } ulong fac(ulong n){ static unsigned const fac10[]={ 1, 941747501, 776540593, 210672823, 690071003, 46617525, 213768760, 693968959, 80489582, 706932617, 794151417, 465499254, 696674125, 679081391, 691448896, 713797428, 275558954, 609927147, 557311239, 831274938, 893291440, 167105676, 415665360, 192812445, 680052439, 557094195, 688128904, 792752264, 192208002, 847923750, 28263099, 728717984, 491684840, 336918851, 633366503, 758306641, 296930470, 699020919, 910172402, 905192639, 792232676, 535935445, 410591335, 810793504, 856039476, 765650325, 702144816, 374640872, 197994359, 320889851, 883115987, 151590670, 245098264, 286989423, 729221238, 511226407, 874957813, 979489918, 228248737, 453190470, 223927796, 852989243, 50287712, 509033048, 243625084, 40159580, 655302994, 829942035, 299277458, 86622874, 109276119, 75894103, 424113548, 567421291, 676588086, 620367716, 815463188, 44143218, 810930880, 499782, 416513770, 59750787, 280879191, 113328955, 910641127, 542089438, 873391271, 49111081, 422655771, 749741439, 838916518, 825928836, 422316600, 445140078, 135792920, 796315921, 334523653, 505750213, 745454889, 284439669, 264422227, 488144299, 264594887, 332021570, 256723915, 768304408, 506153085, 533770970, 929732704, 471614028, 243021423, 36822049, 195608626, 792193516, 215245367, 588445499, 10232161, 974583034, 843169718, 33517339, 744867256, 422042779, 971678608, 929209828, 740055526, 129980885, 404829672, 225807005, 528205456, 240143253, 706174821, 263068586, 794757329, 221639463, 240967815, 20047837, 331134934, 127470054, 793695956, 210565051, 959206504, 138448490, 667121261, 136048183, 226620404, 692730832, 887464126, 715216840, 786895056, 680299255, 592465564, 104271019, 241786040, 302567286, 781777622, 695362768, 267443112, 60985765, 733684226, 937002588, 298149860, 170166008, 805749567, 79282620, 437665466, 386653062, 754588014, 265310082, 81266867, 109466639, 595236940, 591251736, 755288980, 912652888, 460141120, 759221877, 825572784, 18194464, 368427783, 571463817, 553552793, 218414240, 8897606, 791219964, 987232136, 626678298, 363848504, 23298153, 623570515, 506916981, 151639897, 269752482, 341219264, 108067268, 360379612, 245950594, 64405509, 799733966, 607922664, 255515653, 169008059, 832297534, 475858276, 990269468, 56687032, 487125465, 715077943, 946099639, 419973380, 30892688, 823299765, 890460664, 875848715, 155161884, 374508954, 548318802, 921787093, 698253774, 302647199, 259167661, 143814525, 129489686, 795264610, 975222339, 968512986, 345514813, 646295751, 970375323, 591627665, 300860854, 909331562, 720624591, 385294700, 7631741, 443276555, 350397413, 827870055, 225714870, 401347161, 77749271, 597036959, 606229862, 154326026, 361671183, 413774614, 227075193, 608071418, 914590447, 407447508, 552058576, 47474609, 386778642, 758202478, 385950691, 703740000, 966684774, 546362027, 298705630, 676952658, 326449356, 843917452, 242409430, 587833706, 40469219, 210585234, 354879640, 771230526, 34097422, 102287772, 902362543, 722263693, 814944322, 451297925, 902863475, 817029670, 905023960, 555424886, 272662632, 394766353, 666370092, 206219158, 15110235, 976379739, 965535222, 935252937, 650991646, 958967237, 363182237, 233817196, 344617468, 791123841, 630913138, 726529184, 562573003, 563061146, 792960341, 994145576, 230805329, 299465420, 259430953, 179251015, 566371622, 567895990, 558709601, 401533746, 472680587, 807075382, 388625548, 342362854, 714080723, 354518461, 501335155, 921205714, 245572383, 995121871, 597206529, 697042204, 260992104, 462829184, 62381294, 98950871, 913320293, 752117967, 982560320, 257419215, 463752698, 697205827, 656377881, 419290152, 856531770, 447197724, 657965581, 404661208, 722130014, 899687713, 718707067, 430330393, 639106400, 834964009, 902887941, 810884366, 650679669, 328559029, 108952421, 175250094, 141508696, 394269300, 94451378, 262192347, 556407145, 661623397, 656765174, 893733886, 359124883, 407147338, 808451311, 157717476, 949408897, 371377907, 798014486, 870707644, 11124205, 741182897, 157137689, 593507555, 598520569, 306478687, 42984407, 411434960, 116335798, 367793469, 345378248, 332981554, 863453067, 588666836, 607696540, 175011207, 886178571, 387142464, 568865780, 148884679, 477839356, 859137664, 898399404, 46230887, 716245342, 919506383, 429269215, 489098767, 920899704, 397809292, 323931347, 417053198, 292836984, 916151861, 903880874, 530159990, 969165939, 930377972, 143032010, 308745688, 229058228, 904049457, 60317698, 729051789, 192106544, 936997143, 184865547, 169635803, 457399664, 408032575, 961424900, 378907963, 965079378, 946148009, 745479287, 341457669, 573316525, 140488077, 559501368, 217284569, 576419480, 775027508, 235369686, 852776706, 238333284, 188364228, 154707197, 555869026, 259713631, 976997327, 135089920, 637108313, 605899300, 425299135, 630257864, 414103956, 979668540, 465614154, 736566528, 578651185, 500126788, 80473976, 482476368, 671936429, 35129612, 389885031, 703915264, 423047129, 748946352, 989296698, 3993118, 974224703, 841241239, 932795359, 258719575, 251469715, 16846321, 829202764, 9295132, 213896299, 331463491, 472169457, 817096142, 274013552, 803636696, 940028364, 742052578, 854664711, 615518321, 593217956, 761584448, 355182187, 843893299, 269045370, 953802150, 37568955, 542668251, 606642174, 349512365, 736272199, 770343238, 300023457, 658958330, 122738470, 738075352, 594519714, 497862531, 938212102, 435561555, 918773761, 884365386, 579355058, 354020897, 592394585, 827412134, 973741053, 589739172, 312826770, 337102791, 527832013, 824911332, 521867730, 61667222, 55417785, 731992906, 378154470, 145250909, 177299477, 98768957, 991600964, 978388836, 495787634, 474558986, 672353832, 253475753, 196214303, 536802012, 449818931, 550681984, 98005228, 292553790, 222817032, 691608599, 638418413, 156543041, 443440271, 943694930, 1316251, 111637293, 427974745, 726491902, 48389379, 599921716, 420509798, 651853658, 88490275, 417224036, 963106927, 199002083, 165867002, 645430252, 816535156, 692541078, 900972774, 266960681, 341241584, 821525955, 133464546, 6636983, 149464497, 229216326, 812413066, 252821803, 36405236, 639255352, 967552244, 151984988, 116774694, 321750932, 874814096, 484127291, 614908099, 973071400, 192216885, 351532941, 920720784, 748896212, 493940100, 741160184, 403825582, 227938660, 921368915, 416202451, 126428415, 675655870, 662918350, 480606683, 605800134, 215010628, 545337822, 258597915, 963284809, 559623501, 494269864, 254859157, }; ulong z=fac10[n>>10]; for(;n&1023;--n){ z=z*n%MD; } return z; } int main(){ rd_init(); ulong x=rd(); ulong y=rd(); ulong z=rd(); ulong w=rd(); if(w){ z=w; w=x; x=y; y=w; } wt1(y*fac(x)%MD*inverse(fac(x-z)*fac(z)%MD)%MD*fac(x+y+~z)%MD); _exit(0); }