/ TYWZ / 题库 /

Simplified {fmt}

Simplified {fmt}

题目描述

Python的format函数提供了一种比printf更灵活、功能更全面的字符串格式化方法。
例如,给定一个待格式化的字符串:
The contrapositive of “Given {2}, If {0} then {1}” is “Given {2}, If not {1} then not {0}”.
其中的{0}{1}表示 格式限定符{0}表示用第一个参数(下标从0开始计数)填充该位置,{1}表示用第二个参数填充,以此类推。若给定第一个参数为a<b,第二个参数为ca<cb,第三个参数为c is a positive real value,则格式化之后的字符串为
The contrapositive of “Given c is a positive real value, If a<b then ca<cb” is “Given c is a positive real value, If not ca<cb then not a<b”.
format函数的格式限定符还支持调整输出宽度、浮点数精度、对齐位置等,本题并不涉及。若要输出花括号{}本身,则要在待格式化字符串中将花括号连写两次。例如{{0}}={0},第一个参数为Hello World,则格式化的结果为{0}=Hello World
现给定若干行待格式化的字符串,以及若干个参数,请输出格式化之后的结果。

输入格式

第一行是两个正整数\(N,K\),表示有\(N\)行字符串待格式化,有\(K\)个参数。
之后\(N\)行是待格式化的字符串,其中包含大小写字母、数字、标点和空格。
再之后\(K\)行字符串表示参数,其中包含大小写字母、数字、标点,不包含空格。
保证输入的待格式化字符串满足以下要求:
1. 格式限定符必然是左、右花括号配对,括号内只有数字,没有其他任何字符;
2. 输出花括号本身时,保证输入数据中花括号字符连写了两次。

输出格式

\(N\)行,格式化之后的文本。

样例1

输入

1 5
{1}{0}{3}{0}{1}
Alice
Bob
Cindy
Daniel
Emily

输出

BobAliceDanielAliceBob

样例2

输入

7 5
#include {0}
int main()
{{
scanf("{1}", &{2}, &{3});
printf("{4}", {2} + {3});
return 0;
}}
<stdio.h>
%d%d
a
b
{2}+{3}=%d\n

输出

#include <stdio.h>
int main()
{
scanf("%d%d", &a, &b);
printf("{2}+{3}=%d\n", a + b);
return 0;
}

样例3

输入

1 1
{0} spaces ->        <- {0} spaces
8

输出

8 spaces ->        <- 8 spaces

样例说明

样例2中,参数内的“格式限定符”看成普通的字符串,不做特殊处理。

数据规模及约定

\(N \le 100, \quad K \le 10^4\),每行长度\(\le 100\)。
本题共10组数据文件,部分测试文件满足如下附加限制:
测试点#1:\(K \le 10\),行内不含空格,不存在输出花括号本身的情况(即待格式化字符串中不会出现{{}}
测试点#2:\(K \le 10\),行内不含空格
测试点#3:\(K \le 10\),不存在输出花括号本身的情况
测试点#4~5:\(K \le 10\)
测试点#6~7:不存在输出花括号本身的情况

时空限制

时间限制1s,空间限制64MB。

来源

原创题。
ps.已经有大牛将Python format移植到了C++上,并且有望成为C++20标准库的一部分。链接:http://fmtlib.net/latest/index.html

信息

难度
9
分类
字符串 | 模拟 点击显示
标签
(无)
递交数
1
已通过
1
通过率
100%
上传者