問題一覧 > スコア問題

No.2575 Almost Increasing Sequence

レベル : / 実行時間制限 : 1ケース 10.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 23
作問者 : hotman78 / テスター : noshi91
2 ProblemId : 10288 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-12-02 01:06:08

注意

本問はスコア問題ですが,最高得点が存在し,想定解にて最高得点を得ることが出来ます.
ただし,この問題の実行時間制限が厳しいので,最高得点を目指す場合高速な言語の利用を強く推奨します.
writer 解, tester 解の言語はともに C++ で,実行時間はそれぞれ 4024 ms, 673 ms です.

問題文

最初に非負整数 KK が与えられ,以下の様に数列 (A1,A2,A3,)(A_1, A_2, A_3, \dots ) を定めます.

  • AnA_n : 最長減少部分列の長さが 33 であるような全ての要素数 nn の順列に対し,最長増加部分列の長さを KK 乗した値の総和を 998244353998244353 で割ったあまり

3000030000 以下の正整数 NN を一つ決め, NN 以下の正整数 nn に対し AnA_n をそれぞれ求めてください.

採点方法

一ケースあたりの貴方の得点は NN 点となります.また,テストケースは全部で 2020 個あり,全テストケースの得点の合計が提出の得点となります.
ただし,出力が不正である場合は WA と判定され,AC 以外の判定を一つ以上のテストケースで得た解答の得点は 00 点となります.不正な出力とは以下を指します.

  • 出力形式に従わなかった
  • 誤った出力内容を出力した

コンテスト時間中に得た最高得点で最終順位が決定され,コンテスト期間終了後のリジャッジ,システムテスト等は予定しておりません.

制約

  • 0K1090 \leq K \leq 10^9
  • 入力は全て整数で与えられる

入力

KK

出力

NN
A1 A2ANA_1\ A_2 \dots A_{N}

サンプル

サンプル1
入力
100
出力
4
0 0 1 954786991

長さが 22 以下の順列であって最長減少部分列の長さが 33 である物は存在しません.
長さが 33 の順列であって最長減少部分列の長さが 33 であるのは (3,2,1)(3, 2, 1) のみでありこの順列の最長増加列の長さは 11 であるため,A3=1100=1A_3= 1^{100}=1 となります
長さが 44 の順列であって最長減少部分列の長さが 33 であるのは (1,4,3,2),(2,4,3,1),(3,2,1,4),(3,2,4,1),(3,4,2,1),(4,1,3,2),(4,2,1,3),(4,2,3,1),(4,3,1,2)(1, 4, 3, 2), (2, 4, 3, 1), (3, 2, 1, 4), (3, 2, 4, 1), (3, 4, 2, 1), (4, 1, 3, 2), (4, 2, 1, 3),(4, 2, 3, 1),(4, 3, 1, 2)99 通り存在し,いずれも最長増加部分列の長さは 22 となるので,A49×2100954786991(mod998244353)A_4 \equiv 9 \times 2^{100} \equiv 954786991 \pmod {998244353} となります.
このテストケースに対し,この解答を提出した場合 44 点が得られます.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。