莲子的排版设计学

C. 莲子的排版设计学

你现在不能休息,周围有 deadline 在游荡。
莲子正在赶自己的程序设计作业。除了完成程序代码的编写,
对提交上去的作业进行排版以对助教留下良好印象同样重要。
而众所周知,文章里面的代码和一些特殊性质的文本是要附上
行号的,然而它们的篇幅往往都很长,手动去加容易出现失误。因
此,莲子决定自力更生造轮子,写一个行号生成器。
莲子希望实现这样一个功能:输入一份文本文件,并给该文件
加上行号。
以下是本题中三个基本概念的定义:
文本字符由 ASCII 中所有的可视字符,以及空格(ASCII = 32)
组成。
一行字符由若干个(可以为 0 个)文本字符,以及在末尾恰
好一个换行符(ASCII = 10)组成。
文本文件由若干个(至少为 1 个)一行字符组成。文本文件
的行数就是组成它的行的数量。
以下是本题中添加行号的方法:
设该文本文件一共有 𝑚 行。设正整数 𝑚 的字宽为 𝑠。那么,
在每一行的开头会有 𝑠 + 1 的长度用来显示行号。
对于第 𝑖 行,假设 𝑖 的字宽为 𝑡,那么这一行行号将会显示
为 ␣␣⏟ . . . ␣ 𝑖␣
𝑠−𝑡个
,其中 ␣ 表示空格。
以下是一个例子:
为了便于读者观察,这里将所有的空格换成用来表示空格的
␣ 字符。
输入格式
输入包含若干行,为原始的文本文件。
输出格式
输出包含若干行,为加上行号后的文本文件。
由于文档排版限制,洛谷上的样例排版结果更佳。
输入样例
1
#include
using namespace std;
int main(){
int a, b;
cin >> a >> b;
cout << a + b << endl;
cout << a

  • b << endl;
    cout << a * b << endl;
    cout << a / b << endl;
    return 0; }输出样例 1 1 #include
    2 using namespace std;
    3 int main(){
    4 int a, b;
    5 cin >> a >> b;
    6 cout << a + b << endl;
    7 cout << a
  • b << endl;
    8 cout << a * b << endl;
    9 cout << a / b << endl;
    10 return 0;
    11 }
    输入样例
    2
    public class Main {
    public static void main(String[] args) throws
    Exception {
    int b = 0, c = 0;
    for (int a = 123; a < 333; a++) {
    int[] array = new int[10];
    Boolean flag = true;
    b = a * 2;
    c = a * 3;
    array[a / 100] = 1;
    array[a / 10 % 10] = 1;
    array[a % 10] = 1;
    array[b / 100] = 1;
    array[b / 10 % 10] = 1;
    array[b % 10] = 1;
    array[c / 100] = 1;
    array[c / 10 % 10] = 1
    ;
    array[c % 10] = 1;
    for (int i = 1; i < array.length; i++) {
    if (array[i] != 1) {
    flag = false;
    break;

}

}
if (flag)
System.out.println(a+" “+b+” "+c);

}
}
}
输出样例 2
1 public class Main {
2 public static void main(String[] args) throws
Exception {
3 int b = 0, c = 0;
4 for (int a = 123; a < 333; a++) {
5 int[] array = new int[10];
6 Boolean flag = true;
7 b = a * 2;
8 c = a * 3;
9 array[a / 100] = 1;
10 array[a / 10 % 10] = 1;
11 array[a % 10] = 1;
12 array[b / 100] = 1;
13 array[b / 10 % 10] = 1;
14 array[b % 10] = 1;
15 array[c / 100] = 1;
16 array[c / 10 % 10] = 1;
17 array[c % 10] = 1;
18 for (int i = 1; i < array.length; i++)
{
19 if (array[i] != 1) {
20 flag = false;
21 break;
22 }
23 }
24 if (flag)
25 System.out.println(a+" “+b+” "+c);
26 }
27 }
28 }
输入样例 3
样例文件较大,请于洛谷查看。
输出样例 3
样例文件较大,请于洛谷查看。
数据规模
对于全部数据,保证输入的文本文件的字符总数(包括换行符
在内),不超过 2 × 10^4。同时,保证输入数据合法。
评测时,会忽略选手输出文件的行末空格与文末换行。因此选
手可以自行决定行尾是否要输出多余空格。
请使用 Java 或 Python 语言作答的选手注意输入输出时的
效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值