社区讨论

为什么过不了!

B3843[GESP202306 三级] 密码合规参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@m4igrk1a
此快照首次捕获于
2024/12/10 20:54
去年
此快照最后确认于
2025/11/04 13:02
4 个月前
查看原帖
样例和自造的都能随便过,但是就WA
CPP
#include<bits/stdc++.h>
using namespace std;

int sum = 1, flag = -1;
int len, lenb[150];
char a[150];
string b[150];
int cha, da, xi, shu, te, cuo;

int main() {
	cin >> a;
	len = strlen(a);
	for (int i = 0; i < len; i++) {
		if (a[i] == ',') {
			sum++;
		}
	}
	for (int i = 0; i < sum; i++) {
		for (int j = flag + 1; j < len; j++) {
			if (a[j] != ',') {
				b[i] += a[j];
			} else {
				flag = j;
				break;
			}
		}
	}
	for (int i = 0; i < sum; i++) {
		lenb[i] = b[i].length();
		for (int j = 0; j < lenb[i]; j++) {
			if (lenb[i] < 6 || lenb[i] > 12 ) {
				cha = 1;
			}
			if (b[i][j] > '@' && b[i][j] < '[') {
				da = 1;
			} else if (b[i][j] > '`' && b[i][j] < '{') {
				xi = 1;
			} else if (b[i][j] == '!' || b[i][j] == '@' || b[i][j] == '#' || b[i][j] == '$') {
				te = 1;
			} else if (b[i][j] > '/' && b[i][j] < ':'){
				shu = 1;
			} else {
				cuo = 1;
			}
			if (cha != 1) {
				if ((da == 1 && xi == 1 && te == 1) || (shu == 1 && xi == 1 && te == 1) || (da == 1 && shu == 1 && te == 1)) {
					if (cuo != 1) {
						cout << b[i] << endl;
						da = 0, xi = 0, shu = 0, te = 0, cuo = 0;
						break;
					}
				}
			}
		}
	}
	return 0;
}
虽然有点复杂了,但是蒟蒻我觉得思路很清晰

回复

3 条回复,欢迎继续交流。

正在加载回复...