• 今日学习——蓝桥杯 2019年 C语言 B组


    1、手淦(亲身体验,,,没啥大用,最终还是代码)

     

     

    2、代码(下面是我看其他博主代码答案能看的懂的。。。。具体的可以直接去下面的网址看)

    https://blog.csdn.net/qq_44524918/article/details/113530469?spm=1001.2014.3001.5506

    1)试题B:年号字串

    【问题描述】
    小明用字母A对应数字1,B对应2,以此类推,用Z对应26。对于27以上的数字,小明用两位或更长位的字符串来对应,例如AA对应27,AB对应28,AZ对应52,LQ对应329。
    请问2019对应的字符串是什么?

    【答案提交】
    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个大写英文字符串,在提交答案时只填写这个字符串,注意全部大写,填写多余的内容将无法得分。

    题解
    答案:BYQ
    这道题目实际就是一个将十进制转换为26进制

    #include <iostream>
    using namespace std;
    
    char str[27] = {0,'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','Z'};
    
    int main(){
        int n;
        string ans;
        cin >> n;
        
        while(n){
            ans += str[n % 26];
            n /= 26;
        }
        
        int len = ans.length();
        for(int i=len-1; i>=0; i--)
            cout << ans[i];
        
        return 0;
    }

    试题 C: 数列求值
    【问题描述】
    给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求第 20190324 项的最后 4 位数字。

    【答案提交】
    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。

    题解
    答案:4659
    本题类似斐波那契数列,但最后的数值可能会很大,所以我们需要在每一步都余10000,且每步余并不会改变其最后结果,如:

    #include <iostream>
    using namespace std;
    
    const int mod = 1e4;
    long long f[20190327]; 
    
    int main(){
        f[1] = f[2] = f[3] = 1;
        
        for(int i=4; i<=20190324; i++){
            f[i] = (f[i-1] + f[i-2] + f[i-3]) % mod;
        }
        
        cout << f[20190324] << endl;;
        return 0;
    }

    试题 D: 数的分解
    【问题描述】
    把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包含数字 2 和 4,一共有多少种不同的分解方法?注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和1001+1000+18 被视为同一种。

    【答案提交】
    这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

    题解
    答案:40785

    #include <iostream>
    using namespace std;
    
    bool check(int num)
    {
        while (num)
        {
            if (num%10==2||num%10==4)
                return true;
            num/=10;
        }
        return false;
    }
    int main() {
        int res = 0;
        
        for (int i = 1; i < 2019 ; ++i) {
            if (check(i)) continue;
            for (int j = i+1; j < 2019 ; ++j) {
                if (check(j)) continue;
                for (int k = j+1; k < 2019 ; ++k) {
                    if (check(k)) continue;
                    if (i+j+k==2019)
                        res++;
                }
            }
        }
        cout << res << endl;
        return 0;
    }

    试题 H: 等差数列
    时间限制: 1.0s 内存限制: 256.0MB 本题总分:20 分

    【问题描述】
    数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。
    现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有
    几项?

    【输入格式】
    输入的第一行包含一个整数 N。
    第二行包含 N 个整数 A1, A2, · · · , AN。(注意 A1 ∼ AN 并不一定是按等差数列中的顺序给出)

    【输出格式】
    输出一个整数表示答案。

    【样例输入】
    5
    2 6 4 10 20
    【样例输出】

    10
    【样例说明】
    包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、18、20。

    【评测用例规模与约定】
    对于所有评测用例,2 ≤ N ≤ 100000,0 ≤ Ai ≤ 109。

    #include <iostream>
    #include <algorithm>
    #include <set>
    using namespace std;
    
    const int max_n = 100005;
    int a[max_n], N, res = 0;
    
    int main(){
        cin >> N;
        set<int> d;
        
        for(int i=0; i<N; i++)
            cin >> a[i];
        
        sort(a, a+N); //将已知的数列从小到大排序
        
        for(int i=1; i<N; i++)//找出最小公差,set 可以自动排序,且元素唯一 
            d.insert(a[i] - a[i-1]);
        int t = *(d.begin());//d 的首元素即最小公差
    
        for(int i=a[0]; i<a[N-1]; i=i+t) res++; //算出最小项
        
        cout << res+1;
        return 0;
    }
  • 相关阅读:
    STM32时钟配置方法详解
    STM32 入门之 GPIO
    arm可以干什么
    四两拨千斤,ARM是如何运作、靠什么赚钱的
    ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57
    ARM与单片机到底有啥区别
    实得打印机色带芯更换
    IE浏览器不能上传图片
    IE FANS
    win8,win10里面内置的IE浏览器网银无法输入密码
  • 原文地址:https://www.cnblogs.com/lx06/p/15749960.html
Copyright © 2020-2023  润新知