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)