2019年蓝桥杯第十届c++B组真题(原题+题解+答案)

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
  • 5
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值