AT_s8pc_6_f Random Shuffles
Description
[problemUrl]: https://atcoder.jp/contests/s8pc-6/tasks/s8pc_6_f
新学期も始まり、新しいクラスで交流を行いたいと思った E869120 君は、次のようなカードゲームを考えました。
- $ N $ 枚のカードがあり、$ 1,\ 2,\ 3,...,\ N $ と番号付けられています。
- カードは $ D $ 種類の色のいずれかで塗られており、色は $ 0,\ 1,\ 2,...,\ D-1 $ のいずれかの数で表されます。
- カード $ i $ は色 $ S_i\ (0\ \leq\ S_i\
Input Format
入力は以下の形式で標準入力から与えられます。
ただし、$ S_1,\ S_2,\ ...,\ S_N $ に関しては、数字をつなげた文字列として与えられます。
> $ N $ $ D $ $ L $ $ S_{1}S_{2}S_{3}S_{4}\ ...\ S_{N} $
Output Format
$ D $ 行に渡って出力してください。
$ i $ 行目には、プレイヤー $ i $ の $ N\ \div\ D $ 回のゲームの得点の期待値の合計を出力してください。
絶対誤差または相対誤差が $ 10^{-5} $ 未満であれば、正解と見做されます。
Explanation/Hint
### 制約
- $ D $ は $ 3 $ 以上 $ 10 $ 以下の整数
- $ N $ は $ 3 $ 以上 $ 3\ 000\ 000 $ 以下の $ D $ の倍数
- $ L $ は $ 1 $ 以上 $ 1\ 000\ 000\ 000 $ 以下の整数
- $ S_i\ (1\ \leq\ i\ \leq\ N) $ は $ 0,\ 1,\ 2,\ ...,\ D-1 $ のいずれか
### 部分点
この問題はいくつかの小課題に分けられ、その小課題のすべてのテストケースに正解した場合に「この小課題に正解した」とみなされます。
提出したソースコードの得点は、正解した小課題の点数の合計となります。
1. (50 点):$ N\ \leq\ 10,\ D\ \leq\ 4,\ L\ =\ 1 $
2. (70 点):$ N\ \leq\ 10,\ D\ \leq\ 4,\ L\ \leq\ 5 $
3. (80 点):$ N\ \leq\ 50,\ D\ \leq\ 4,\ L\ \leq\ 300 $
4. (100 点):$ N\ \leq\ 3\ 000,\ D\ \leq\ 4,\ L\ \leq\ 300 $
5. (210 点):$ N\ \leq\ 3\ 000,\ D\ \leq\ 4 $
6. (130 点):$ N\ \leq\ 50\ 000,\ D\ \leq\ 4 $
7. (40 点):$ N\ \leq\ 150\ 000,\ D\ \leq\ 6 $
8. (40 点):$ N\ \leq\ 300\ 000,\ D\ \leq\ 8 $
9. (40 点):$ N\ \leq\ 500\ 000,\ D\ \leq\ 10 $
10. (40 点):$ N\ \leq\ 800\ 000,\ D\ \leq\ 10 $
11. (200 点):$ N\ \leq\ 3\ 000\ 000,\ D\ \leq\ 10 $
### Sample Explanation 1
カードの並びを最初 $ (1,\ 2,\ 3) $ として、$ L=1 $ 回の問題文中の 3. の操作を繰り返すと、$ (1,\ 3,\ 2),\ (2,\ 1,\ 3),\ (3,\ 2,\ 1) $ の可能性が $ 1/3 $ ずつになります。 それぞれ、プレイヤーの得点は以下の通りです。 - $ (1,\ 3,\ 2) $:プレイヤーの得点はそれぞれ $ 1,\ 0,\ 0 $ - $ (2,\ 1,\ 3) $:プレイヤーの得点はそれぞれ $ 0,\ 0,\ 3 $ - $ (3,\ 2,\ 1) $:プレイヤーの得点はそれぞれ $ 0,\ 2,\ 0 $ よって、プレイヤーの得点の期待値はそれぞれ $ 1/3,\ 2/3,\ 1 $ になります。
### Sample Explanation 2
$ 1 $ ラウンド目では、次の $ 4 $ 通りが等確率で起こります。 - $ (1,\ 2,\ 4,\ 3) $:プレイヤーの得点はそれぞれ $ 1,\ 2,\ 4,\ 0 $ - $ (1,\ 3,\ 2,\ 4) $:プレイヤーの得点はそれぞれ $ 1,\ 3,\ 0,\ 0 $ - $ (2,\ 1,\ 3,\ 4) $:プレイヤーの得点はそれぞれ $ 0,\ 0,\ 0,\ 0 $ - $ (4,\ 2,\ 3,\ 1) $:プレイヤーの得点はそれぞれ $ 0,\ 2,\ 0,\ 0 $ したがって、$ 1 $ ラウンド目でのそれぞれのプレイヤーの得点の期待値はそれぞれ $ 1/2,\ 7/4,\ 1,\ 0 $ になります。 $ 2 $ ラウンド目では、次の $ 8 $ 通りが等確率で起こります。 - $ (1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 8,\ 7) $:プレイヤーの得点はそれぞれ $ 1,\ 2,\ 0,\ 0 $ - $ (1,\ 2,\ 3,\ 4,\ 5,\ 7,\ 6,\ 8) $:プレイヤーの得点はそれぞれ $ 1,\ 9,\ 0,\ 0 $ - $ (1,\ 2,\ 3,\ 4,\ 6,\ 5,\ 7,\ 8) $:プレイヤーの得点はそれぞれ $ 1,\ 2,\ 0,\ 0 $ - $ (1,\ 2,\ 3,\ 5,\ 4,\ 6,\ 7,\ 8) $:プレイヤーの得点はそれぞれ $ 1,\ 2,\ 0,\ 5 $ - $ (1,\ 2,\ 4,\ 3,\ 5,\ 6,\ 7,\ 8) $:プレイヤーの得点はそれぞれ $ 1,\ 2,\ 4,\ 0 $ - $ (1,\ 3,\ 2,\ 4,\ 5,\ 6,\ 7,\ 8) $:プレイヤーの得点はそれぞれ $ 1,\ 3,\ 0,\ 0 $ - $ (2,\ 1,\ 3,\ 4,\ 5,\ 6,\ 7,\ 8) $:プレイヤーの得点はそれぞれ $ 0,\ 0,\ 0,\ 0 $ - $ (8,\ 2,\ 3,\ 4,\ 5,\ 6,\ 7,\ 1) $:プレイヤーの得点はそれぞれ $ 8,\ 2,\ 0,\ 0 $ したがって、$ 2 $ ラウンド目でのそれぞれのプレイヤーの得点の期待値はそれぞれ $ 7/4,\ 11/4,\ 1/2,\ 5/8 $ となります。