QOJ.ac

QOJ

時間限制: 1.0 s 記憶體限制: 512 MB 總分: 100 可 Hack ✓

#16723. 格式

统计

在 C/C++ 中,scanf 使用格式化字符串 "%[...]" 来读取由该格式化字符串定义的字符集组成的字符串。

左括号后面紧跟一个字符序列和一个右括号。括号之间的字符序列 $f$ 定义了可接受的字符集。这里只允许使用 ASCII 码在 32(空格)到 126(~)之间的字符。在本题中,字符 ^]- 仅在格式化字符串中用作控制字符。

如果序列 $f$ 的第一个字符不是脱字符(^),则序列 $f$ 定义了可用字符集 $s$,该函数将读取所有字符,直到遇到第一个不在集合 $s$ 中的字符或输入结束。如果序列 $f$ 的第一个字符是 ^,则其后必须紧跟一个非空字符序列,用于定义禁用字符集 $s$,该函数将读取所有字符,直到遇到第一个在集合 $s$ 中的字符或输入结束。

一组 ASCII 码连续的字符可以简写为一个区间:该组中的第一个字符、减号(-,ASCII 码为 45)、该组中的最后一个字符。例如,区间 "B-Q" 定义了从 'B''Q'(含)的所有大写英文字母。

如果一个字符串仅由大写和小写英文字母、数字和空格组成,则称其为字母数字字符串

给定一个字母数字字符串 $t$,构建一个 "%[...]" 格式的字符串,满足:

  1. 接受字符串 $t$:当输入该字符串时,scanf 能够完整地读取它。
  2. 接受最少数量的其他长度为 $|t|$ 的字母数字字符串。
  3. 在所有满足上述条件的格式化字符串中,其长度(作为字符串)最小。
  4. 在所有满足上述条件的格式化字符串中,其字典序最小。

输入格式

输入的第一行包含一个非空字符串 $t$,仅由大写和小写英文字母、数字和空格组成。保证该字符串的长度不超过 $100\,000$,不包含前导或尾随空格,且不包含两个或更多连续的空格。

输出格式

输出一个格式化字符串 "%[...]"(不带引号)作为答案。

样例

输入样例 1

bc0123456789ABCDEFxxyyzz

输出样例 1

%[!-Fbcx-z]

输入样例 2

012345678 abcdefABCDEF

输出样例 2

%[^9G-Zg-z]

输入样例 3

01234567 abcdefABCDEF

输出样例 3

%[ -7:-F[-f]

说明

请注意,格式化字符串中可能包含非字母数字字符。例如,在样例 1 中,使用 '!'(ASCII 码为 33)代替 '0',因为 '!''F' 之间的字母数字字符数量与 '0''F' 之间的相同,但包含 '!' 的格式化字符串字典序更小。

如果字符串 $b$ 不是字符串 $a$ 的前缀,且满足以下两个条件之一,则称字符串 $a$ 的字典序小于字符串 $b$:

  1. $a$ 是 $b$ 的前缀。
  2. 设 $k$ 为 $a$ 和 $b$ 首次出现不同字符的位置。字符串 $a$ 在位置 $k$ 处的字符的 ASCII 码小于字符串 $b$ 在位置 $k$ 处的字符的 ASCII 码。

提示(ASCII 码表)

ASCII 字符 ASCII 字符 ASCII 字符 ASCII 字符 ASCII 字符 ASCII 字符
32 48 0 64 @ 80 P 96 ` 112 p
33 ! 49 1 65 A 81 Q 97 a 113 q
34 " 50 2 66 B 82 R 98 b 114 r
35 # 51 3 67 C 83 S 99 c 115 s
36 $ 52 4 68 D 84 T 100 d 116 t
37 % 53 5 69 E 85 U 101 e 117 u
38 & 54 6 70 F 86 V 102 f 118 v
39 ' 55 7 71 G 87 W 103 g 119 w
40 ( 56 8 72 H 88 X 104 h 120 x
41 ) 57 9 73 I 89 Y 105 i 121 y
42 * 58 : 74 J 90 Z 106 j 122 z
43 + 59 ; 75 K 91 [ 107 k 123 {
44 , 60 < 76 L 92 \ 108 l 124 \
45 - 61 = 77 M 93 ] 109 m 125 }
46 . 62 > 78 N 94 ^ 110 n 126 ~
47 / 63 ? 79 O 95 _ 111 o

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.