题目描述
小蓝正在开发自己的 OJ 网站。他要求网站用户的密码必须符合以下条件:
- 长度大于等于 8 个字符,小于等于 16 个字符。
- 必须包含至少 1 个数字字符和至少 1 个符号字符。
例如 lanqiao2024!
、+-*/0601
、8((>w<))8
都是合法的密码。
而 12345678
、##**##**
、abc0!#
、lanqiao20240601!?
都不是合法的密码。
请你计算以下的字符串中,有多少个子串可以当作合法密码?只要两个子串的开头字符和末尾字符在原串中的位置不同,就算作不同的子串。
字符串为:
kfdhtshmrw4nxg#f44ehlbn33ccto#mwfn2waebry#3qd1ubwyhcyuavuajb#vyecsycuzsmwp31ipzah#catatja3kaqbcss2th
输入格式
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输出格式
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输入输出样例
无
#include<bits/stdc++.h>
using namespace std;
int count1=0;
string S="kfdhtshmrw4nxg#f44ehlbn33ccto#mwfn2waebry#3qd1ubwyhcyuavuajb#vyecsycuzsmwp31ipzah#catatja3kaqbcss2th";
int main ()
{
int n=S.size();
for(int i=0;i<n-7;i++)
{
for(int j=7;j<=15;j++)
{
if(i+j>=n)
{
continue;
}
int t=i;
int flag1=0,flag2=0;
for(int k=t;k<=t+j;k++)
{
if(S[k]>='A'&&S[k]<='Z'||S[k]>='a'&&S[k]<='z')
{
;
}
else if(S[k]>='0'&&S[k]<='9')
{
flag1++;
}
else
{
flag2++;
}
}
if(flag1>0&&flag2>0)
{
count1++;
}
}
}
cout<<count1<<endl;
return 0;
}
//by crtzk7