目录
P10385 [蓝桥杯 2024 省 A] 艺术与篮球 - 洛谷 (luogu.com.cn)
P8706 [蓝桥杯 2020 省 AB1] 解码 - 洛谷 (luogu.com.cn)
P8711 [蓝桥杯 2020 省 B1] 整除序列 - 洛谷 (luogu.com.cn)
P8722 [蓝桥杯 2020 省 AB3] 日期识别 - 洛谷 (luogu.com.cn)
P10385 [蓝桥杯 2024 省 A] 艺术与篮球 - 洛谷 (luogu.com.cn)
先把日期一个个列出来,然后逐一判断
#include<iostream>
using namespace std;
int jud(int year, int month, int day) {int sum = 0;int s[8] = { 0 };s[0] = year / 1000 % 10;s[1] = year / 100 % 10;s[2] = year / 10 % 10;s[3] = year / 1 % 10;s[4] = month / 10 % 10;s[5] = month / 1 % 10;s[6] = day / 10 % 10;s[7] = day / 1 % 10;for (int i = 0; i < 8; i++) {switch (s[i]) {case 0:sum += 13;break;case 1:sum += 1;break;case 2:sum += 2;break;case 3:sum += 3;break;case 4:sum += 5;break;case 5:sum += 4;break;case 6:sum += 4;break;case 7:sum += 2;break;case 8:sum += 2;break;case 9:sum += 2;break;}}return sum;
}
int main() {int year = 2000;int month = 1;int day = 1;int count = 1;while (1) {int flag = 0;if (year % 100 != 0) {if (year % 4 == 0)flag = 1;}else {if (year % 400 == 0)flag = 1;}day++;if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {if (day > 31) {month++;day = 1;}}else if (month == 2) {if (flag) {if (day > 29) {month++;day = 1;}}else {if (day > 28) {month++;day = 1;}}}else {if (day > 30) {month++;day = 1;}}if (month > 12) {year++;month = 1;}int sum = jud(year, month, day);if (sum > 50)count++;if (year == 2024 && month == 4 && day == 13) {cout << count << endl;return 0;}}
}
P8706 [蓝桥杯 2020 省 AB1] 解码 - 洛谷 (luogu.com.cn)
设输入的是a,输出的是b,遍历a,如果a中该项是字母则存到b中,如果是数字(假设是p),则用while循环让b的前一项重复p遍
注意点是int p = a[i] - '0'-1;
b数组记得开大一点
不过有个让我很疑惑的地方,a中居然有数字1(一开始设置检测2到9只能AC一个)?题目中说了连续的才能改,如果只有1个字母的话也算不上连续吧?总感觉样例有点问题
#include<iostream>
#include<string>
using namespace std;
int main() {string a;cin >> a;string b[1000000];int t = 0;for (int i = 0; i < a.size(); i++) {if (a[i] >= '1' && a[i] <= '9') {int p = a[i] - '0'-1;while (p--) {b[t] = b[t - 1];t++;}}else {b[t] = a[i];t++;}}for (int i = 0; i < t; i++) {cout << b[i];}return 0;
}
P8711 [蓝桥杯 2020 省 B1] 整除序列 - 洛谷 (luogu.com.cn)
目前做过的最水的题,注意开long long
#include<iostream>
using namespace std;
int main() {long long n; cin >> n;while (n) {cout << n << " ";n /= 2;}return 0;
}
P8722 [蓝桥杯 2020 省 AB3] 日期识别 - 洛谷 (luogu.com.cn)
#include<iostream>
#include<string>
using namespace std;
int main() {string a;cin >> a;string b[3];if (a[0] == 'J') {if (a[1] == 'a') cout << 1;else {if (a[3] == 'n')cout << 6;else cout << 7;}}else if (a[0] == 'F')cout << 2;else if (a[0] == 'M') {if (a[2] == 'r')cout << 3;else cout << 5;}else if (a[0] == 'A') {if (a[1] == 'p')cout << 4;else cout << 8;}else if (a[0] == 'S')cout << 9;else if (a[0] == 'O')cout << 10;else if (a[0] == 'N')cout << 11;else if (a[0] == 'D')cout << 12;cout << " ";int c = (a[3] - '0') * 10 + a[4] - '0';cout << c;return 0;
}