結果

問題 No.3178 free sort
ユーザー tails
提出日時 2025-06-13 22:58:12
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 1 ms / 2,000 ms
コード長 18,323 bytes
コンパイル時間 202 ms
コンパイル使用メモリ 28,944 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-06-13 22:58:14
合計ジャッジ時間 1,736 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 40
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:6:59: warning: implicit declaration of function ‘write’ [-Wimplicit-function-declaration]
    6 | #define wt1(v) ({char wbuf[64],*wp=wbuf+sizeof wbuf;wt(v);write(1,wp,wbuf+sizeof wbuf-wp);})
      |                                                           ^~~~~
main.c:251:9: note: in expansion of macro ‘wt1’
  251 |         wt1(z);
      |         ^~~
main.c:252:9: warning: implicit declaration of function ‘_exit’ [-Wimplicit-function-declaration]
  252 |         _exit(0);
      |         ^~~~~
main.c:252:9: warning: incompatible implicit declaration of built-in function ‘_exit’ [-Wbuiltin-declaration-mismatch]

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

#define rd_init() char*rp=({char*mmap();mmap(0l,1l<<25,1,2,0,0ll);})
#define wt(v) ({unsigned _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 rep(v,e) for(typeof(e)v=0;v<e;++v)
#define reps(v,s,e) for(typeof(e)v=s;v<e;++v)

#define MD 998244353

typedef unsigned long ulong;

unsigned const fac[]={
         1, 833304363, 660632282, 615755686, 998047254, 639703568, 453670701, 794183641,
 941747501, 412973089, 772656801,  36327821, 893229936, 328334944, 893518880, 564833604,
 776540593, 688873642, 726993833, 932983970, 128216278, 649554864, 871562632, 761498663,
 210672823, 743270971, 464445908, 175573687, 833947050, 357823271, 172803714, 350866487,
 690071003, 864179410, 288856201, 929601910, 106778689, 313992114, 466421725, 757663653,
  46617525, 347362600, 166862154, 693078209, 144244571, 882408898, 983464882, 574749332,
 213768760, 741463662, 890142251, 202262961, 658405368, 737717514, 410107025,    690309,
 693968959, 341886645, 390564572, 396400177, 792789611, 568189311, 896995063, 457044531,
  80489582, 402490933, 716053903, 234035031, 701594340, 607706743, 717580013, 430127488,
 706932617, 283846067, 745989638, 143778807, 110865259, 791055851, 462638582,  39061954,
 794151417, 152451405, 642848541, 252219955, 372254667, 386610321, 907605006, 954675005,
 465499254, 577331041,  33190716, 940376360, 493881726,  78238969, 281915241, 525399348,
 696674125, 732119047, 404203922, 293469198, 903339290, 262058298, 702651176, 185617355,
 679081391, 397318861, 456285045, 995214301, 251192546, 379010026, 187135021, 745508031,
 691448896, 176805032, 704014229, 126954088, 855356143, 208223105, 154176644, 502834844,
 713797428, 431045418, 553507580, 940384666, 516268909, 311994785, 226456217, 240690798,
 275558954, 835896059,  23745510, 753187941, 193192626, 984077911, 360733089, 412556172,
 609927147, 721934275,  84672440, 769834809, 805529589, 321838643, 269450156, 257906422,
 557311239,  88566463, 609474687, 271312438, 147254629, 392425552, 837461266, 587089102,
 831274938, 866637186, 494263987, 350415814, 526295537, 142459893,  85525688, 327184650,
 893291440, 402569553, 642211999, 195685559, 847533864, 242231840, 197756513,  31824637,
 167105676, 353747895, 509639222, 802056356, 853727910, 831600522, 353598971, 978561833,
 415665360, 499395536, 240171711,  39982516, 336169897, 449042465, 972199040,  95933222,
 192812445, 107342543, 904039668, 245279983, 772419561, 199239745, 556945780, 219098611,
 680052439, 532712922, 455558559, 498333175, 759659037, 617923166, 382448388, 186268782,
 557094195, 708854839,  41795586, 578610237,  78652428, 277858531, 802232933,  12984187,
 688128904, 747919798, 535817571, 195056574, 789300172, 818828332, 787058383, 785210793,
 792752264, 198791639, 872884844,  92731264,  29229932, 215288339, 625337189, 162351690,
 192208002, 305789340, 395648089, 556930505, 848402600, 935841200, 739452219,  82719354,
 847923750,  88346797, 427973031, 352294754, 971216492, 333609382, 668226544, 945190338,
  28263099,  72555329, 626346706, 132024451, 735586809, 933240006, 444078714, 294810364,
 728717984, 697493119,  89776222, 317167980, 634069136, 554517592, 975123855, 286593746,
 491684840, 704831482, 349238907, 175781962, 722183454, 517425508, 385800478, 962437544,
 336918851, 142048283, 987517815, 246214261, 441983058, 887149558, 371510416, 537538243,
 633366503, 774835317,   7662316, 929755976, 908602335, 710650969, 225756512, 233309687,
 758306641, 806938998, 681384044, 406778759,  73559959,  95933634, 119394064,  36674428,
 296930470, 799843213, 497211282, 561308294, 693648538, 409781810, 199343329,  91410189,
 699020919, 788392301, 427321092, 889678732, 594112456, 276309710, 775014788, 562266189,
 910172402, 272734405, 863236949, 292630666, 363766453, 301492979, 466975660, 263791700,
 905192639, 119948055, 417246105, 233939875, 294989394, 902709870, 662846858, 440929533,
 792232676, 361198484, 638556471, 519681460, 637810117, 959561671, 507141122, 366582762,
 535935445, 504375121, 205822007, 285767583, 395546350, 388590899, 887673597, 803924648,
 410591335, 746378863,  39811295, 208577321, 919760763, 808844251,  31435587,   9410542,
 810793504, 112008789, 194737610, 273983909, 610660887,  41965286, 854237285, 375735977,
 856039476, 790674508,  78921088, 152031918, 593698614, 142859121, 774791943, 552760801,
 765650325, 581095459,  29405696,  96553614, 501394000, 610671891, 270295648, 570927004,
 702144816, 416335707, 322647586, 724929380, 668190389, 186976237, 703037768, 249454012,
 374640872, 793389793, 673099235,  85471918, 828575570, 612557047, 409785103, 617232885,
 197994359, 991001339, 471196104,  36195913, 427008196, 836953803, 622431830, 943133006,
 320889851, 935325182, 669808842, 253241428, 618129319, 196912210, 508037758, 560015257,
 883115987, 116862314, 649186112, 360458601,  15572513, 350894356, 171226766, 351884425,
 151590670,  28456196, 779823636,  89048304,  36410173, 471313270, 351533523, 892873128,
 245098264, 409013688, 820620751, 423468103, 355993026,  42136810, 654400734, 590505909,
 286989423,  54560148, 567832112, 659621753, 530820121, 263118207, 525245021, 807872067,
 729221238, 839784479, 839742886,  76363718, 625139720, 286400316, 243478603, 345748553,
 511226407, 338404883, 382861991,  87428315, 650294959,  35605009,  88815737, 876800343,
 874957813, 458264071, 362237232, 984386252, 945396153, 526649590, 986363786, 109457012,
 979489918,  17695476, 304590266, 232867463,  85846478, 867954947, 602458417, 600462519,
 228248737, 162057374, 784423347, 490527645, 422778818, 195678676, 757899527, 817599348,
 453190470, 776595907, 177727718, 761707589, 101898771,  84382203, 650331195, 158395821,
 223927796, 868569575,  37159193, 544143470, 576361209, 342883032, 368017017, 287424543,
 852989243, 739020347, 980843223, 353721093, 650534250, 854973120, 838941092, 171367935,
  50287712,  25821417, 587776631, 349674932,  57485441, 168852944, 893326188, 892349312,
 509033048, 270362229, 502953510, 543154548, 105279578, 605429941, 804181570, 147239955,
 243625084, 372446322,  54446859, 670319618, 939503743, 537861921, 533775515, 750783617,
  40159580, 545278847, 825179542,  67843887,  35456043, 901120568, 875084334, 704928730,
 655302994, 820696539, 585608990, 558165174, 491478238, 588206869, 572908377, 514973562,
 829942035, 361020153, 752249314, 130627544, 904792371, 429130458, 897732470, 776968250,
 299277458, 422352754, 449961479, 840294252, 668030239, 111119806, 483746526, 427671629,
  86622874, 705608384, 157022628, 791743871, 357378813, 296643356, 132807491, 267377408,
 109276119, 221316006, 839226536, 935157849, 522443763, 889966700, 428203157, 133909913,
  75894103, 285648044, 947896940, 685564027, 456704025,  55154740, 831870080, 293425487,
 424113548, 283105885, 333210749, 447210999, 261210723, 106056475, 191486187,  27774089,
 567421291, 492000161, 559290254, 932447181, 781171669, 133554956, 500608167,  45801002,
 676588086, 208063299, 409258328, 159754318, 735034107, 166709838, 558583657, 728021088,
 620367716, 159355472, 153516815, 128432866, 262968767, 918184000, 218305393, 392074402,
 815463188, 896014788, 716432580, 720270336, 175794174, 931565121, 706308290, 447978613,
  44143218, 763254266, 136819710, 947796254, 947822434, 188424601, 666152946, 514409754,
 810930880, 210582481, 645357588, 542068302,   3090761, 478790044, 618587521,  94230363,
    499782, 296750386, 173452645, 117498938, 774417057, 232883513, 694314651, 477797540,
 416513770, 174292690, 758445942, 354911034, 176503116, 728450910, 893903706, 335884626,
  59750787, 478600316, 875246426, 480380030, 551603116, 524477732, 236868821,  95462985,
 280879191, 982869783, 317788254, 176274759, 787038454, 853650250, 265880620, 735731646,
 113328955, 776524873, 288677549, 312646570, 619800552, 528881106, 910456692, 620302954,
 910641127, 609983783, 761667398, 216939780, 775911695, 366100988, 829097186, 238834815,
 542089438, 977085124, 935991314, 398648898, 320999397, 982305958, 707521469, 263938801,
 873391271,  89261916, 230520537, 349352841, 943138817, 935149671,  58493165,  34798487,
  49111081, 919970664, 203069278, 779227920, 163244519,  75304122, 771692676, 745062009,
 422655771,  43882372, 718936336, 884899753, 986251912, 533347647,  62989663, 233038929,
 749741439, 310799637, 612647040, 763407535, 810314808, 560490087, 272221068, 717872468,
 838916518, 616994025, 301057324, 552549322, 827345410, 597592827, 607804784, 765414633,
 825928836, 947489953, 915134151, 434373855, 869351660, 399543711,  12701348, 527717450,
 422316600, 105907025, 450639547, 102767932,  64927239, 330269896, 617082181, 577026905,
 445140078,  77818708, 373975693, 130342298,  43649459, 569008355, 137535234, 830817878,
 135792920,  70847234, 768369869, 594640690, 967385014, 369493725, 162679289, 486553556,
 796315921, 502878031, 200840560,   6867048, 272402289,  95676989, 496321260, 311574227,
 334523653,  21964598, 268334882, 917434845, 346208520, 346188007, 721621377, 986679467,
 505750213, 510716609,  30197571, 434430412, 433120538, 288406188, 145800914, 677148559,
 745454889, 635251199, 147846900, 407144104, 810166271, 388917138, 696129640, 693044164,
 284439669, 246090834, 258335161, 358069373, 878017124, 860564156, 827540844, 678186310,
 264422227, 757943100, 971883134, 718877125, 896463581, 977374747, 796870911,  48430310,
 488144299, 651175618, 576164579, 100822180, 249958732, 537374795, 583795941, 854393224,
 264594887, 841091105, 679162063, 510058232, 751182048, 202094598, 849587474, 394433324,
 332021570, 512574572, 112547659, 284965143, 950507329, 164197917, 413933258, 442818164,
 256723915, 778824024, 683806567, 680345933,  27440215, 170065058, 464495434,   8174354,
 768304408, 749452707,  75881752, 175598108, 484691018, 713082650, 697986031, 421843956,
 506153085,  61830166,  55819690, 624825292, 158106232, 395409737, 253556416, 216037926,
 533770970, 203570639, 349572685, 413478625, 499362242, 500621017, 572373670, 798398930,
 929732704, 983884556, 966821658, 592430373, 790052392,  49933947, 733265923, 578953612,
 471614028, 153093088, 669287065, 724533551, 157503015, 925593363,   2562202, 574625299,
 243021423, 669175002, 864812543, 197397755, 746610101, 129879513, 852411332, 790295362,
  36822049, 332804847,  83374616, 281113515, 807036282, 912799082, 838644885, 273289828,
 195608626,  78545181, 373807994, 930586987, 137190747, 632216364, 696061079, 533392578,
 792193516, 665545727, 158870233, 544296986, 403244445, 186809265, 255261639, 807548105,
 215245367, 553877235, 310297943, 605370907, 650614134, 801934671, 118598961,  17314731,
 588445499, 660330077, 263271699, 471293923, 210451126, 597575970,  26732492, 743841127,
  10232161, 198082544, 661538152, 959895711, 812929775, 431008506, 205311624, 441913554,
 974583034, 752492230, 910623876, 693375680, 965301472, 486520227, 317018242, 521808008,
 843169718, 446050690, 937976859, 887283652, 197681567, 230522693, 677826221, 882945225,
  33517339,  89309255, 968613027, 572996072, 172264065, 713096401, 759680328, 291358368,
 744867256, 113504955, 212516562, 234163831, 553790070, 697710598, 291485458, 188968196,
 422042779, 756841058, 525074347, 989020571, 791267689, 867507307, 423078903, 683167407,
 971678608, 339608094, 528460054, 844483723,  84332458, 641015611,  67099601, 432879693,
 929209828, 678761464, 291709749, 305246885, 148997125, 907524713, 135247374, 759645822,
 740055526, 138688972, 165024031, 587907345, 525113773, 966551774, 813028581, 277638769,
 129980885, 651309423, 578372491, 804686832, 664852026, 780560250, 496821381, 355049725,
 404829672,  72751850, 952118131, 312612755, 803777516,  27034534, 380948712, 859115776,
 225807005,  17274975, 324220863, 861694996, 374835656, 850153718, 178675515, 850662254,
 528205456, 164957117, 314100553, 910342402, 174817754, 402763588, 137876639,  80241474,
 240143253, 926841231, 103690150, 421131611, 742620942, 547492392, 751234021, 492329383,
 706174821, 264974381, 503372884, 662369153, 408591894, 704378551, 450234389, 824584291,
 263068586, 963488722,  89309656,  74085122, 385714021, 743380790, 503007609, 765717385,
 794757329, 116422220, 425095671, 503450170, 948738769, 645801995, 287858136, 935386654,
 221639463, 208754090, 978077665, 289871637, 316811143, 927263656, 925798480, 887594807,
 240967815, 347177587,  31960501, 125540428, 812007457, 879647087, 199303090, 320208571,
  20047837, 254443093, 623393730, 334911111, 145967205, 353024820, 430171478, 451530625,
 331134934, 717336017, 298173968, 336499547, 730706454, 734231188, 319604168, 986176024,
 127470054, 421976602, 244196708, 469299930,  88253188, 678550190, 836295741, 480506497,
 793695956, 516889194, 419931769,  17683315, 447256842, 966679630, 308604283, 752962159,
 210565051, 897603219,  22938628, 635906629, 859253926, 218138286, 986893231, 908764670,
 959206504, 182850359, 953065442, 830702870, 345792201, 864306267, 575203033, 864397080,
 138448490, 811333692, 876154450, 207196033, 272311454, 913578976,  47768411, 575913746,
 667121261, 161818201, 271134179, 542178756, 397577193, 191351580, 724764194, 155420866,
 136048183,  80243504, 514833159, 990273470, 214900497, 957229199, 213336866,  14363964,
 226620404, 215138174, 831549299, 121490821,  71435121, 125854672, 630828794, 595589904,
 692730832,  66343515,  78941441, 186558661, 431050343,  23540743, 109396764,  82727711,
 887464126, 953490157, 413794494, 935487757, 625077081, 245238790,  19517404, 205049005,
 715216840, 460353518,  29547188, 717288331, 127529996, 796069773, 996475736, 456103432,
 786895056, 459640035, 974607917,  35503757, 190084139, 526284700, 474206026,  38643750,
 680299255, 592938206, 212383939, 214466118, 934447964, 402982382,  30980638, 332968289,
 592465564, 950897322, 692376203, 502282985, 786955038, 936530984, 174695016,  25102999,
 104271019, 427755998, 190885770, 309726754, 149449439, 982333407, 947882308, 103478451,
 241786040, 877452822, 537787152, 440837566, 374870012, 109133968, 331560543, 210409087,
 302567286, 899319305, 777852406,  19990946, 386977829, 212788810,  59592917,  32216712,
 781777622, 632791607, 888916009, 630379810,  47306892, 246388713,  76352747,  35253777,
 695362768, 623972602, 732528470, 658802148,  74502360, 777534208, 461501935, 815114743,
 267443112, 871536921,  21874704, 722182130, 804242323, 752423345, 449264785, 136316318,
  60985765,  69835606, 484430295, 755794926, 519299887, 815297941, 837080840, 125214215,
 733684226, 933437062, 346928022, 760097748, 456798938, 603550467, 675243412, 390399928,
 937002588, 291565964, 215246279, 961995728,  54866207, 808820787, 164333408, 558892469,
 298149860, 908874063, 570609321, 761666499, 356505249, 816356874, 518511913, 310655589,
 170166008, 611113292, 169537764, 486729845, 912208287, 119772774, 374437729, 552018058,
 805749567, 711616773, 796451542, 173482991, 511842254,  79965717, 525704749,  81124280,
  79282620, 190126775, 957070684,  85424340, 642083545, 557095026,  45474999,  83728117,
 437665466, 848327214, 907834199, 720355563, 711298674, 862557727,  17101484, 929873543,
 386653062, 237221632, 707223022, 553015781, 496876894, 512396281, 720933961, 187895152,
 754588014, 434896137, 244306550,  67023877, 778448011, 304946752, 447725633, 652993411,
 265310082, 116428975, 924365978, 426424914, 733319772, 324241704, 764839449, 874571452,
  81266867, 113603122, 190359531, 725867973, 354822109, 681211349, 727187198, 642998670,
 109466639,  75574659, 354501262, 977739842, 199347607, 450084648, 464471853,  79685201,
 595236940, 137349344, 134595183, 944715854, 498412534, 654228421,  30428498, 172738178,
 591251736, 488717424, 144813786, 857064427, 718550908, 118456934, 626073824, 919921121,
 755288980, 441889513, 529435229, 758275201, 848063827, 843967355,  28348993,  29155860,
 912652888, 249424637, 375843958, 852358429, 807076793,  96805707, 782737062, 722525003,
 460141120,  17926143, 740203267, 188562356, 977810082, 786651955, 766557826, 224283764,
 759221877, 357019540, 174475456, 128216318, 733620925, 724002520,  25869296, 427952339,
 825572784, 982917025, 225590981, 678091909, 872693296,  54823948,  59638889, 226620743,
  18194464, 257611941, 400812145, 625453443, 492000265, 152239436, 900381884, 528054672,
 368427783, 925346721, 288175789, 390423721, 516951878, 696676198, 987470025, 833055671,
 571463817, 124216397, 617854032, 503941194, 641477977, 987498650, 947862596, 296589184,
 553552793, 713332667,  65935983, 107827214, 453671716, 824548517, 744386239,  52604867,
 218414240, 947308987, 216835933, 633253188, 279895683, 617201196, 922941047, 159597089,
   8897606, 608249589, 428021099, 107583179, 789339999, 762773996, 807492635, 908432985,
 791219964, 130968649, 810382722, 963625359, 600060759, 271541766, 655777249, 791416038,
 987232136, 650737730, 691966239, 668057441,  14411932, 972550152, 473229202, 385076961,
 626678298, 283704863, 575560817, 111170545, 803246712, 411740568, 359112889, 149672257,
 363848504, 760037342, 985757389, 619177091, 290635517, 298331879, 399406497, 671464861,
  23298153, 207670560,   4229427, 376463886, 811492921, 188973346, 818822992, 544735935,
 623570515, 566327093, 521402410, 680005857, 345332159, 842783461, 324780807, 713322861,
 506916981, 517110925, 873297390, 250545414, 960186298, 236530170, 951645240, 744062338,
 151639897, 302376908,  64113920, 703747371, 111574874, 169065276, 301066768, 398453210,
 269752482, 771106673, 696480942,  95780439, 395423448, 244882480, 157518089, 945256949,
 341219264,  79230097, 474508588, 559091776, 706208587,  42096873,  34603170, 616334572,
 108067268, 516916696, 259313491, 731468557, 641563156, 989872207, 729616597, 964497100,
 360379612, 552428990, 724475363, 994947059, 433933642, 831084366,  85263735, 157085280,
 245950594, 250721295, 568624141,
};

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;
}

unsigned a[10];
unsigned b;

int main(){
	rd_init();
	for(int c;c=*rp++-'0',c>=0;){
		++a[c];
		++b;
	}
	ulong z=1;
	rep(i,10){
		z=z*fac[a[i]>>7]%MD;
		reps(j,a[i]&~0x7f,a[i]){
			z=z*(j+1)%MD;
		}
	}
	z=inverse(z);
	z=z*fac[b>>7]%MD;
	reps(j,b-1&~0x7f,b-1){
		z=z*(j+1)%MD;
	}
	z=z*(b-a[0])%MD;
	wt1(z);
	_exit(0);
}
0