GESP 3级¶
B3848 [GESP样题 三级] 逛商场¶
B3849 [GESP样题 三级] 进制转换¶
B3842 [GESP202306 三级] 春游¶
B3843 [GESP202306 三级] 密码合规¶
提示
大写、小写、数字,至少有两种
使用 a + b + c >= 2
if (a + b + c >= 2 && d == 1) return true;
代码
// 输入string
// 每个逗号之间拆分出来密码,判断是否合法
// 长度合法
// 小写、大写、数字、4个特殊字符
// 大写、小写、数字,至少有两种
// 特殊字符必须有
#include <bits/stdc++.h>
using namespace std;
string s;
bool check(string s) {
int len = s.size();
if (len < 6 || len > 12) return false;
int a = 0, b = 0, c = 0, d = 0;
for (int i = 0; i < len; i++) {
if (s[i] >= 'a' && s[i] <= 'z') a = 1;
else if (s[i] >= 'A' && s[i] <= 'Z') b = 1;
else if (s[i] >= '0' && s[i] <= '9') c = 1;
else if (s[i] == '!' || s[i] == '@' || s[i] == '#' || s[i] == '$') d = 1;
else return false;
}
if (a + b + c >= 2 && d == 1) return true;
return false;
}
int main() {
cin >> s;
for (int i = 0, len = s.size(); i < len; i++) {
string t;
int j = i;
while (j < len && s[j] != ',') t += s[j++];
if (check(t)) cout << t << '\n';
i = j;
}
return 0;
}
B3867 [GESP202309 三级] 小杨的储蓄¶
B3868 [GESP202309 三级] 进制判断¶
代码
#include<bits/stdc++.h>
using namespace std;
void f(string s) {
int a = 1, b = 1, c = 1, d = 1;
for (int i = 0, len = s.size(); i < len; i++) {
if (s[i] >= '2') a = 0;
if (s[i] >= '8') b = 0;
if (s[i] > '9') c = 0;
if (s[i] >= 'G') d = 0;
}
cout << a << ' ' << b << ' ' << c << ' ' << d << endl;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
string s;
cin >> s;
f(s);
}
return 0;
}
B3925 [GESP202312 三级] 小猫分鱼¶
B3926 [GESP202312 三级] 单位转换¶
B3956 [GESP202403 三级] 字母求和¶
B3957 [GESP202403 三级] 完全平方数¶
B4003 [GESP202406 三级] 移位¶
B4004 [GESP202406 三级] 寻找倍数¶
B4038 [GESP202409 三级] 平衡序列¶
B4039 [GESP202409 三级] 回文拼接¶
B4066 [GESP202412 三级] 数字替换¶
B4067 [GESP202412 三级] 打印数字¶
B4261 [GESP202503 三级] 2025¶
B4262 [GESP202503 三级] 词频统计¶
B4358 [GESP202506 三级] 奇偶校验¶
B4359 [GESP202506 三级] 分糖果¶
B4413 [GESP202509 三级] 数组清零¶
代码
// 每次用最大减去最小,直到数组全是0
// 输出操作次数
#include <bits/stdc++.h>
using namespace std;
int a[110], n, cnt;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
while (true) {
int maxn = -1, minn = 110, k;
for (int i = 1; i <= n; i++) {
if (a[i] >= maxn) maxn = a[i], k = i;
if (a[i] && a[i] < minn) minn = a[i];
}
a[k] -= minn;
cnt++;
// 全是0
bool flag = false;
for (int i = 1; i <= n; i++) if (a[i]) flag = true;
if (!flag) break;
}
cout << cnt;
return 0;
}
// 判断跳出循环,也可以用最小值是0,来结束循环
B4414 [GESP202509 三级] 日历制作¶
提示
我们发现,这道题目,只问2025年的,所以12个月的日历是固定的
在考场上,可以直接输出
我们在练习的时候,不允许直接输出,通过代码推m月的1号是星期几
代码
// MON TUE WED THU FRI SAT SUN
// 0 1 2 3 4 5 6
#include <bits/stdc++.h>
using namespace std;
int mon[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int m;
int main() {
cin >> m;
int t = 0;
if (m > 9) {
for (int i = 9; i < m; i++) t = (t + mon[i]) % 7;
}
if (m < 9) {
for (int i = 9 - 1; i >= m; i--) t = (t - mon[i]) % 7;
t = (t + 7) % 7;
}
// printf("---%d\n", t);
printf("MON TUE WED THU FRI SAT SUN\n");
for (int i = 0; i < t; i++) printf(" ");
for (int i = 1; i <= mon[m]; i++) {
printf("%3d ", i);
t++;
if (t == 7) {t = 0; cout << endl;}
}
return 0;
}