No.8112 区間和係数多項式?
タグ : / 解いたユーザー数 5
作問者 : 👑
注意
この問題はApril Fool Contest 2024向けに作られたネタ問題です。
問題自体に嘘はありませんが、正攻法の考察で解くことは難しいかもしれません。
なおこの問題の実行時間制限は6000[ms]です。高速な言語・処理系の利用を推奨します。
参考までにwriter解はc++で2207[ms]、PyPy3で2691[ms]、Python3でTLEとなります。
問題文
入力に 個の正整数 と 個の非負整数 が与えられます。
最初に長さ の非負整数列 が初項 公比 の等比数列として与えられています。
まずは記法の導入です。 未満の各非負整数 に対し、 で の 個目の成分を表します。
各正整数 に対し、 の 進加法付値(で割り切れる回数)を と置き、 と定めます。
未満の各非負整数 と非負整数 に対し、 を用いて非負整数 を以下のように再帰的に定めます:
再帰的定義に慣れていない人向けの説明はこちらです。(クリックで開く)
いかなる正整数 に対しても が成り立つので、 に を反復して適用することでいずれ に到達します。その回数を と置くと、
と表せます。右辺は の区間和を係数に持つ の多項式です。
以下で説明する 個のクエリを処理してください。
各クエリは、 個の 未満の非負整数 と 個の非負整数 の組 です。
クエリ は以下のように処理します:
- まず の 個目の成分 を で置き換えることで を更新する。
- 次に更新後の に対する を で割った余りを求める。(以下、この値をこのクエリに対する回答と呼ぶ)
ただしクエリは入力から与えられません。 以下の各正整数 に対し、 個目のクエリ は
として定めます。ここで非負整数 に対する は を で割った余りを表し、 は と定義します。
入力
入力は以下の形式で標準入力から 行で与えられます:
- 行目に が半角空白区切りで与えられます。
- 行目に が半角空白区切りで与えられます。
- 行目に が半角空白区切りで与えられます。
- 行目に が半角空白区切りで与えられます。
- 行目に が半角空白区切りで与えられます。
- 行目に が半角空白区切りで与えられます。
制約
入力は以下の制約を満たします:
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
- は を満たす整数である。
出力
以下の各正整数 に対し、 行目に 個目のクエリに対する回答を出力してください。
最後に改行してください。
サンプル
サンプル1
入力
1 1 1 0 1 0 0 0 1 1 1 1 0
出力
0
であり、最初は として与えられています。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
なので、これで全てのクエリが処理できました。
サンプル2
入力
2 2 2 1 1 1 0 0 1 1 0 1 0
出力
1 0
であり、最初は として与えられています。
回目のクエリ により が
に置き換わり(結果的に変化せず)、
を で割った余り を出力します。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
なので、これで全てのクエリが処理できました。
サンプル3
入力
4 3 2 1 2 2 2 3 1 2 1 2 1
出力
2 0
であり、最初は として与えられています。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
なので、これで全てのクエリが処理できました。
サンプル4
入力
8 4 2 1 1 3 2 7 1 2 3 3 2
出力
3 3
であり、最初は として与えられています。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
回目のクエリ により が
に置き換わり、
を で割った余り を出力します。
なので、これで全てのクエリが処理できました。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。