P8871 [传智杯 #5 初赛] C-莲子的排版设计学

题目背景

> 你现在不能休息,周围有 deadline 在游荡。 莲子正在赶自己的程序设计作业。除了完成程序代码的编写,对提交上去的作业进行排版以对助教留下良好印象同样重要。 而众所周知,文章里面的代码和一些特殊性质的文本是要附上行号的,然而它们的篇幅往往都很长,手动去加容易出现失误。因此,莲子决定自力更生造轮子,写一个行号生成器。

题目描述

莲子希望实现这样一个功能:输入一份文本文件,并给该文件加上行号。 以下是本题中三个基本概念的定义: - **文本字符**由 $\textsf{ASCII}$ 中所有的可视字符,以及空格($\textsf{ASCII}=32$)组成。 - **一行字符**由若干个(可以为 $0$ 个)文本字符,以及在末尾**恰好一个**换行符($\textsf{ASCII}=10$)组成。 - **文本文件**由若干个(至少为 $1$ 个)一行字符组成。文本文件的行数就是组成它的行的数量。 以下是本题中添加行号的方法: - 设该文本文件一共有 $m$ 行。设正整数 $m$ 的字宽为 $s$。那么,在每一行的开头会有 $s+1$ 的长度用来显示行号。 - 对于第 $i$ 行,假设 $i$ 的字宽为 $t$,那么这一行行号将会显示为 $\underbrace{\texttt{␣␣...␣}}_{s-t\text{ 个}}\ i\ \texttt{␣}$,其中 $\texttt{␣}$ 表示空格。 以下是一个例子: $$\boxed{\begin{aligned} &\verb!#include!\\ &\verb!using namespace std;!\\ &\verb!int main(){!\\ &\verb! int a, b;!\\ &\verb! cin >> a >> b;!\\ &\verb! cout

输入格式

输出格式

说明/提示

### 数据范围及约定 对于全部数据,保证输入的文本文件的字符总数(包括换行符在内),不超过 $2\times 10^4$。同时,保证输入数据合法。 评测时,会忽略选手输出文件的行末空格与文末换行。因此选手可以自行决定行尾是否要输出多余空格。请使用 Java 或 Python 语言作答的选手注意输入输出时的效率。