#P2093. ACSL 2022-2023 Senior Division Contest #2 Binary Counting
ACSL 2022-2023 Senior Division Contest #2 Binary Counting
题目描述
给定键盘上的字符串,将字符串中每个字符转换为与 ASCII 码等值的二进制数。生成
的连接字符串中,搜索以 0、1、10、11… 开始的递增二进制数数列,直到出现一个在字符串
中任意位置都无法找到的二进制数。从字符串的开头进行查找,如果找到这个二进制数,从字
符串中移除这个二进制数。然后从字符串的末尾进行查找,如果找到这个二进制数,从字符串
中移除这个二进制数。一旦数列中出现一个无法被找到的数字时,将字符串转换为不以 0 开头的八进制数。然后用八进制数字组成的数列 0、…、7、10、11、… 重复相同的过程。输出可以找到的最后一个八进制数的十进制等值数。如果无法找到 0,则输出 。
输入格式
包含键盘上任意字符的字符串。字符串将少于 个字符。
输出格式
一旦数列中出现一个无法找到的数字,输出在完成上述所有删除操作之后的字符串中可以找到的最后一个八进制数的十进制等值数。如果无法找到 0,则输出 。
输入输出样例
输入 #1
Roses are red.
输出 #1
4
输入 #2
A is for Alpha; B is for Bravo; C is for Charlie.
输出 #2
9
输入 #3
A stitch in time saves nine.
输出 #3
8
输入 #4
1, 2: Buckle my shoe! 3, 4: Shut the door!
输出 #4
6
输入 #5
The quick brown fox jumped over the lazy dogs.
输出 #5
5
说明/提示
【样例解释】
样例 #1 解释:
对于字符串 Roses are red. 运用如下所示每个字符的 ASCII 码,将其转换成二进制数的
连接字符串。
| 字符 | ASCII | 二进制数 | 字符 | ASCII | 二进制数 |
|---|---|---|---|---|---|
| R | 82 | 01010010 | r | 114 | 01110010 |
| o | 111 | 01101111 | e | 101 | 01100101 |
| s | 115 | 01110011 | sp | 32 | 00100000 |
| e | 101 | 01100101 | r | 114 | 01110010 |
| s | 115 | 01110011 | e | 101 | 01100101 |
| sp | 32 | 00100000 | d | 100 | 01100100 |
| a | 97 | 01100001 | . | 46 | 00101110 |
现在搜索以下字符串中从 0 开始的二进制数:
01010010 01101111 01110011 01100101 01110011 00100000 01100001
01110010 01100101 00100000 01110010 01100101 01100100 00101110
从字符串的两端删除 0,使字符串变为:
1010010 01101111 01110011 01100101 01110011 00100000 01100001
01110010 01100101 00100000 01110010 01100101 01100100 0010111
从字符串的两端删除 1,使字符串变为:
010010 01101111 01110011 01100101 01110011 00100000 01100001
01110010 01100101 00100000 01110010 01100101 01100100 001011
从字符串的两端删除 10,使字符串变为:
0010 01101111 01110011 01100101 01110011 00100000 01100001
01110010 01100101 00100000 01110010 01100101 01100100 0011
从字符串的两端删除 11,使字符串变为:
0010 001111 01110011 01100101 01110011 00100000 01100001
01110010 01100101 00100000 01110010 01100101 01100100 00
将上方显示的 100 从两端移除后,继续这个过程直到最后的字符串变为:
0000110000011000010010010000000001000100
在最终的字符串中无法找到字符串 1101。二进制数 0、1、10、11、100、101、110、111、1000、1001、1010、1011 和 1100 在字符串中找到并从字符串的一端或两端删除,但没有找到和删除 1101。
将最终生成的字符串转换为一个八进制数,即 603022200104。重复相同的过程,字符串数
列为 603022200104、6302220014、630222004、6302004、602004、60200,因为在字符串中不能找到 5,所以最后一个可以找到的八进制数是 4。