#P8871. [传智杯 #5 初赛] C-莲子的排版设计学
[传智杯 #5 初赛] C-莲子的排版设计学
题目背景
你现在不能休息,周围有 deadline 在游荡。
莲子正在赶自己的程序设计作业。除了完成程序代码的编写,对提交上去的作业进行排版以对助教留下良好印象同样重要。
而众所周知,文章里面的代码和一些特殊性质的文本是要附上行号的,然而它们的篇幅往往都很长,手动去加容易出现失误。因此,莲子决定自力更生造轮子,写一个行号生成器。
题目描述
莲子希望实现这样一个功能:输入一份文本文件,并给该文件加上行号。
以下是本题中三个基本概念的定义:
- 文本字符由 中所有的可视字符,以及空格()组成。
- 一行字符由若干个(可以为 个)文本字符,以及在末尾恰好一个换行符()组成。
- 文本文件由若干个(至少为 个)一行字符组成。文本文件的行数就是组成它的行的数量。
以下是本题中添加行号的方法:
- 设该文本文件一共有 行。设正整数 的字宽为 。那么,在每一行的开头会有 的长度用来显示行号。
- 对于第 行,假设 的字宽为 ,那么这一行行号将会显示为 ,其中 表示空格。
以下是一个例子:
$$\boxed{\begin{aligned} &\verb!#include为了便于读者观察,这里将所有的空格换成用来表示空格的 字符。
$$\boxed{\begin{aligned} &\verb!#include输入格式
输入包含若干行,为原始的文本文件。
输出格式
输出包含若干行,为加上行号后的文本文件。
提示
数据范围及约定
对于全部数据,保证输入的文本文件的字符总数(包括换行符在内),不超过 。同时,保证输入数据合法。
评测时,会忽略选手输出文件的行末空格与文末换行。因此选手可以自行决定行尾是否要输出多余空格。请使用 Java 或 Python 语言作答的选手注意输入输出时的效率。