
蓝桥杯c++每日刷题(洛谷)
不过有个让我很疑惑的地方,a中居然有数字1(一开始设置检测2到9只能AC一个)?题目中说了连续的才能改,如果只有1个字母的话也算不上连续吧?设输入的是a,输出的是b,遍历a,如果a中该项是字母则存到b中,如果是数字(假设是p),则用while循环让b的前一项重复p遍。注意点是int p = a[i] - '0'-1;目前做过的最水的题,注意开long long。先把日期一个个列出来,然后逐一判断。
·
目录
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;
}
更多推荐
所有评论(0)