题解:P10906 [蓝桥杯 2024 国 B] 合法密码

George222 Lv3

image

本来以为字符串多大,结果就这点,直接暴力。

枚举起始点,对于每个起始点枚举后面 位有没有能用的即可。

最后答案为


附:计算代码

枚举代码如下:

1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < n; ++i) {
for (int length = 8; length <= 16; ++length) {
if (i + length > n)
break;
string substring = s.substr(i, length);
if (check(substring))
++valid_count;
}
}

check 函数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
bool has_digit = false;
bool has_symbol = false;
unordered_set<char> symbols = {'+', '-', '*', '/', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '<', '>', '?', '~', '`'};

for (char c : password) {
if (isdigit(c))
has_digit = true;
else if (symbols.find(c) != symbols.end())
has_symbol = true;
if (has_digit && has_symbol)
return true;
}
return false;
  • 标题: 题解:P10906 [蓝桥杯 2024 国 B] 合法密码
  • 作者: George222
  • 创建于 : 2024-08-25 21:26:00
  • 更新于 : 2024-08-28 11:43:59
  • 链接: https://george110915.github.io/题解:P10906 [蓝桥杯 2024 国 B] 合法密码/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
题解:P10906 [蓝桥杯 2024 国 B] 合法密码