U667228 Simple Division(Hard)
题目背景
>此乃某题的加强版本,赫赫赫
>
>[原题链接](https://atcoder.jp/contests/abc448/tasks/abc448_e)
题目描述
给定三个整数 $K, M, P$。
接下来有 $K$ 段描述,第 $i$ 段给出一个十进制数字 $c_i$ 和一个正整数 $l_i$,表示把数字 $c_i$ 连续写 $l_i$ 次。
将这 $K$ 段按顺序拼接,得到一个十进制串 $S$。
定义 $X$ 为十进制串 $S$ 表示的非负整数。
注意:
- $S$ **允许有前导零**
- $X$ 可能非常大,**不能直接存储**
你需要求出:
$[
\left\lfloor \frac{X}{M} \right\rfloor \bmod P
]$
其中 $(\lfloor \cdot \rfloor)$ 表示向下取整。
---
表示第 $i$ 段由 $l_i$ 个数字 $c_i$ 组成。
输入格式
第一行三个整数:
$ K $ $ M $ $ P $
接下来 $K$ 行,每行两个整数:
$
c_i ,l_i
$
输出格式
输出一个整数,表示:
$[
\left\lfloor \frac{X}{M} \right\rfloor \bmod P
]$
说明/提示
样例1拼接得到:
```text
11033
```
所以:
$[
\left\lfloor \frac{11033}{13} \right\rfloor = 848
]$
再对 `10007` 取模仍为 `848`。
- $(1 \le K \le 2\times 10^5)$
- $(1 \le M \le 10^{18})$
- $(1 \le P \le 10^{18})$
- $(0 \le c_i \le 9)$
- $(1 \le l_i \le 10^{18})$
数据保证10-20组模数为质数,1-9组任意
[个人题解](https://www.cnblogs.com/usedchang/articles/19687355)