AT_arc020_3 [ARC020C] A mod B Problem

题目描述

在高桥君还是高中生的时候,他曾经参加过的竞赛中,曾经出过求两个整数之和的问题。对于最强最快的他来说,这样的问题简直是小菜一碟。 如今,高桥君已经成为大学生,正在和你一起参加面向大学生的竞赛。然而,他常用的编程语言所需的集成开发环境坏掉了,根本无法解题。因此,作为队友的你,决定在裁判组修复开发环境之前,代替他解决以下问题。 给定整数 $A$ 和 $B$,请输出 $A$ 除以 $B$ 的余数。这里,整数 $A$ 和 $B$ 具有如下特点: - 整数 $A$ 和 $B$ 都是十进制数。 - 在 $100$ 个测试点中,有 $99$ 个测试点满足 $B=1000000007(10^9+7)$。 - 整数 $A$ 非常大,并且部分具有周期性,其形式如下所述。 - 给定 $N$、$a_1,a_2,\ldots,a_N$ 和 $L_1,L_2,\ldots,L_N$,这表示整数 $A$ 由高位到低位依次重复 $a_1$ 共 $L_1$ 次,$a_2$ 共 $L_2$ 次,……,$a_N$ 共 $L_N$ 次拼接而成。 例如,当 $N=3,a=\{123,4,56\},L=\{2,2,1\},B=1000000007$ 时,$A=1231234456$,$A$ 除以 $B$ 的余数为 $231234449$。

输入格式

输入通过标准输入给出,格式如下: > $N$ > $a_1\ L_1$ > $a_2\ L_2$ > $\vdots$ > $a_N\ L_N$ > $B$ - 第 $1$ 行给出一个整数 $N\ (1\leq N\leq 10,000)$,表示后续整数 $A$ 的信息长度。 - 接下来的 $N$ 行,每行给出整数 $a_i\ (1\leq a_i\leq 10^9)$ 和 $L_i\ (1\leq L_i\leq 10^9)$,用半角空格分隔。 - 第 $N+2$ 行给出整数 $B\ (1\leq B\leq 1,000,000,007)$。

输出格式

请输出 $A$ 除以 $B$ 的余数,输出占一行,末尾需换行。

说明/提示

### 部分分 本题有 3 个数据集,每个数据集对应部分分。 - 若能通过 $L_1+L_2+\ldots+L_N\leq 100,000$ 且 $B=1000000007$ 的数据集 1,可获得 $20$ 分。 - 若能通过 $B=1000000007$ 的数据集 2(不包含上面的数据集 1),可获得 $79$ 分。 - 若能通过无额外限制的数据集 3,可获得 $1$ 分。 ### 样例解释 1 这是题目中的例子。 ### 样例解释 2 $A=123123123$。 ### 样例解释 3 该测试用例满足数据集 1、2、3 的限制。 ### 样例解释 4 该测试用例满足数据集 2、3 的限制。 ### 样例解释 5 该测试用例满足数据集 3 的限制。 由 ChatGPT 4.1 翻译