A:组队


简单题,答案是490
B:年号字串

这道题主要是采用string类的字符串连接将二十六个字母存到数组中,下标从0开始。
char ss[26] = {
'Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'};
一个数模26的结果为数组下标,下标对应的就是的字母,一个数循环模26再将对应的字母拼接起来就是结果,但是如果模26为0代表是这一位为Z那么就要将这个数减1再模,比如AA ~ AZ是27 ~ 52,52 % 26 = 0对应Z,52 / 26 % 26 = 2对应的是B而不是A,所以就要将52减一再除,就得到1,对应的就是A,而如果模26不为0则不变。
AC代码
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char ss[26] = {
'Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y'};
string s = "";
int main()
{
int n;
cin >> n;
while(n != 0)
{
int x = n % 26;
s = ss[x] + s;
if(x == 0)
{
n--;
}
n /= 26;
}
cout << s;
return 0;
}
答案是:BYQ
C:数列求值

这道题采用递推的方式,用abc存放前三项的值,d存放前三项的和,由于取最后4位数,所以每次运算模10000即可
#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
int n;
cin >> n;
ll a = 1,b = 1,c = 1,d;
for(int i = 4 ; i <= n ; i++)
{
d = (a + b + c) % 10000;
a = b;
b = c;
c = d;
}
if(n <= 3)//避免输入的数小于4
{
cout << "1" << endl;
}
else
{
cout << d << endl;
}
return 0;
}
答案是:4695
D:数的分解

直接用暴力,i从1到2019,j从i+1到2019,k等于2019 - i - j,最后每次判断一下里面是否含有2或者4即可
#include <iostream>
#include <string>
#include <cstring>
#include <cstdio>
#include <stdlib.h>
using namespace std;
const int N = 1e5 + 5;
char str1[N],str2[N],str3[N];
typedef long long ll;

这篇博客主要介绍了2019年蓝桥杯第十届C++组的比赛真题,包括A到J共10道题目。涉及的算法与数据结构包括字符串操作、数列计算、迷宫遍历、树的权值计算、等差数列处理和后缀表达式计算等。博主给出了部分题目的解题思路和关键代码片段,例如B题利用字符串连接构建年号字串,E题通过BFS解决迷宫问题,F题利用stringstream转换整型为字符串进行查找特定数字。
最低0.47元/天 解锁文章
2040

被折叠的 条评论
为什么被折叠?



