問題一覧 > 通常問題

No.2017 Mod7 Parade

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 87
作問者 : souta-1326 / テスター : penguinman
2 ProblemId : 6717 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2022-07-10 10:08:21

問題文

11 桁の非負整数から成る長さ KK の数列 DD と、正整数から成る長さ KK の数列 LL が与えられます。
ここで、(1,2,K)(1,2,\ldots K) の空でない部分列を SS とおきます。(元の順番は保持します。)
SS の長さを kk として、f(S)f(S) を 上の桁から順に DS1D_{S_1}LS1L_{S_1} 個、DS2D_{S_2}LS2L_{S_2} 個、\ldotsDSkD_{S_k}LSkL_{S_k} 個並んだ整数と定義します。ここで、f(S)f(S) の先頭が 00 であっても構いません。
SS の作り方は 2K12^K-1 通りありますが、それら全てについて「f(S)f(S)77 で割った余り」を求め、その総和を (109+7)(10^9+7) で割った余りを求めてください。

入力

KK
D1D_1 L1L_1
D2D_2 L2L_2
\vdots
DKD_K LKL_K

・入力は全て整数である。
1K1051 \leq K \leq 10^5
0Di90 \leq D_i \leq 9
1Li1091 \leq L_i \leq 10^9
D10D_1 \neq 0

出力

考えられる全ての SS に対して f(S)f(S)77 で割った余りを求め、それらの総和を (109+7)(10^9+7) で割った余りを出力してください。

サンプル

サンプル1
入力
3
5 4
2 7
1 5
出力
16

S=(1)S=(1) の時、f(S)=5555f(S)=5555 となり、これを 77 で割った余りは 44 です。
S=(2)S=(2) の時、f(S)=2222222f(S)=2222222 となり、これを 77 で割った余りは 22 です。
S=(3)S=(3) の時、f(S)=11111f(S)=11111 となり、これを 77 で割った余りは 22 です。
S=(1,2)S=(1,2) の時、f(S)=55552222222f(S)=55552222222 となり、これを 77 で割った余りは 00 です。
S=(1,3)S=(1,3) の時、f(S)=555511111f(S)=555511111 となり、これを 77 で割った余りは 11 です。
S=(2,3)S=(2,3) の時、f(S)=222222211111f(S)=222222211111 となり、これを 77 で割った余りは 55 です。
S=(1,2,3)S=(1,2,3) の時、f(S)=5555222222211111f(S)=5555222222211111 となり、これを 77 で割った余りは 22 です。
これらを合計すると 4+2+2+0+1+5+2=164+2+2+0+1+5+2=16 となるので、1616 を出力します。

サンプル2
入力
10
5 325056811
9 679667253
5 142418837
3 231318149
3 795021347
0 14971591
8 259744487
3 210609568
5 219691049
8 957754853
出力
3048

f(S)f(S) の先頭が 00 のとき、例えば S=(6,7)S=(6,7) のときもカウントします。

サンプル3
入力
3
1 5
1 5
1 5
出力
27

f(S)f(S) の値が同じでも、異なる SS によって作られている場合は別々にカウントしてください。
また、答えは非常に大きくなることがあるので、109+710^9+7 で割った余りを求めてください。

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