题解:P16429 应试玉符
whisper_free_Evil · · 题解
原题
题意
给定 ZJ-a,其中 Wrong Name,否则如果密码不合法输出 Wrong Password,否则输出 Accept。
思路
这题直接判断,判断账号名:
-
长度为
7 且前三位为ZJ- -
后四位全是数字且有一位非
0
如果有一项不满足账号名就不合法。判断密码就直接枚举每个数用三个变量记录是否有数字、大写字母、小写字母即可。
代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int t;
string n, p;
bool F(char c) {
return c <= '9' && c >= '0';
}
bool F1(string s) {
return s[0] == 'Z' && s[1] == 'J' && s[2] == '-' && s.size() == 7 && F(s[3]) && F(s[4]) && F(s[5]) && F(s[6]) && s[3] - '0' + s[4] - '0' + s[5] - '0' + s[6] - '0' > 0;
}
bool F2(string s) {
bool f1 = 0, f2 = 0, f3 = 0;
for (char c : s) {
f1 |= c <= 'Z' && c >= 'A';
f2 |= c <= 'z' && c >= 'a';
f3 |= c <= '9' && c >= '0';
}
return s.size() >= 6 && f1 && f2 && f3;
}
void solve() {
cin >> n >> p;
cout << (!F1(n) ? "Wrong Name\n" : !F2(p) ? "Wrong Password\n" : "Accept\n");
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> t;
while (t--) {
solve();
}
return 0;
}