第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学A组),第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学A组)精彩开赛!

马肤

温馨提示:这篇文章已超过464天没有更新,请注意相关的内容是否还可用!

摘要:第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学A组)是一场面向全国大学生的编程竞赛,旨在选拔和培养软件领域的优秀人才。该比赛涉及C/C++语言的编程和应用,要求参赛者展示扎实的编程基础、创新能力和问题解决能力。作为一场省级赛事,它吸引了众多优秀的大学生参赛,为软件行业发掘潜力新星,推动技术创新和发展。

蓝桥杯 2023年省赛真题
C/C++ 大学A组

  • 试题 A: 幸运数
  • 试题 B: 有奖问答
  • 试题 C: 平方差
  • 试题 D: 更小的数
  • 试题 E: 颜色平衡树
  • 试题 F: 买瓜
  • 试题 G: 网络稳定性
  • 试题 H: 异或和之和
  • 试题  I: 像素放置
  • 试题 J: 翻转硬币

    试题 A: 幸运数

    本题总分: 5 5 5 分


    【问题描述】

      小蓝认为如果一个数含有偶数个数位,并且前面一半的数位之和等于后面一半的数位之和,则这个数是他的幸运数字。例如 2314 2314 2314 是一个幸运数字,因为它有 4 4 4 个数位,并且 2 + 3 = 1 + 4 2 + 3 = 1 + 4 2+3=1+4。现在请你帮他计算从 1 1 1 至 100000000 100000000 100000000 之间共有多少个不同的幸运数字。

    【答案提交】

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


    4430091


    根据插板法我们可知整数 n n n拆分成 k k k个非负部分的方案数为 C n + k − 1 k − 1 C_{n+k-1}^{k-1} Cn+k−1k−1​,有下界, j j j个部分下界为 x x x时方案数为 C n + k − 1 − j x k − 1 C_{{n+k-1-jx}}^{k-1} Cn+k−1−jxk−1​,那么根据容斥原理可知存在一个部分大于 x x x的拆分方案数为 ∑ i = 1 k ( − 1 ) i − 1 C n + i − 1 − i ( x + 1 ) i − 1 \sum_{i=1}^k(-1)^{i-1}C_{n+i-1-i(x+1)}^{i-1} ∑i=1k​(−1)i−1Cn+i−1−i(x+1)i−1​,记 p ( n , k ) p(n,k) p(n,k)为不存在部分大于 x x x的拆分方案数,有 p ( n , k ) = C n + k − 1 k − 1 − ∑ i = 1 k ( − 1 ) i − 1 C k i C n + i − 1 − i ( x + 1 ) i − 1 = ∑ i = 0 k ( − 1 ) i C k i C n + i − 1 − i ( x + 1 ) i − 1 . p(n,k)=C_{n+k-1}^{k-1}-\sum_{i=1}^k(-1)^{i-1}C_{k}^{i}C_{n+i-1-i(x+1)}^{i-1}=\sum_{i=0}^k(-1)^{i}C_{k}^{i}C_{n+i-1-i(x+1)}^{i-1}. p(n,k)=Cn+k−1k−1​−i=1∑k​(−1)i−1Cki​Cn+i−1−i(x+1)i−1​=i=0∑k​(−1)iCki​Cn+i−1−i(x+1)i−1​.考虑到幸运数字数位个数为偶,即不能有前缀 0 0 0,于是考虑将 p ( n − 1 , k ) p(n-1,k) p(n−1,k)看作最高位数字大于 1 1 1的方案数,但这样方案数里就包含了高位数字为 10 10 10的方案,显然不合法,所以减去不合法部分 p ( n − 10 , k − 1 ) p(n-10, k -1) p(n−10,k−1),最终答案为 ∑ k = 1 4 ∑ n = 1 9 k ( p ( n − 1 , k ) − p ( n − 10 , k − 1 ) ) ⋅ p ( n , k ) . \sum_{k=1}^4\sum_{n=1}^{9k}\big(p(n-1,k)-p(n-10,k-1)\big)\cdot p(n,k). k=1∑4​n=1∑9k​(p(n−1,k)−p(n−10,k−1))⋅p(n,k).

    #include 
    long long C(int n, int m) {
        if (m > n || n  
    

    试题 B: 有奖问答

    本题总分: 5 5 5 分


    【问题描述】

      小蓝正在参与一个现场问答的节目。活动中一共有 30 30 30 道题目,每题只有答对和答错两种情况,每答对一题得 10 10 10 分,答错一题分数归零。

      小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要 100 100 100 分,所以到达 100 100 100 分时小蓝会直接停止答题。

      已知小蓝最终实际获得了 70 70 70 分对应的奖项,请问小蓝所有可能的答题情况有多少种?

    【答案提交】

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


    8335366


    记 d p i , j dp_{i,j} dpi,j​为第 i i i个问题小蓝获得 10 j 10j 10j分的方案数,显然 d p 0 , 0 = 1 dp_{0,0}=1 dp0,0​=1,对于问题 i i i,如何小蓝回答错误,那么 d p i , 0 = ∑ j = 0 9 d p i − 1 , j dp_{i,0}=\sum_{j=0}^9dp_{i-1,j} dpi,0​=∑j=09​dpi−1,j​,因为当小明有 10 ⋅ 10 10\cdot 10 10⋅10分时问答结束故不可转移,当小明回答对时则 d p i , j = d p i − 1 , j − 1 dp_{i,j}=dp_{i-1,j-1} dpi,j​=dpi−1,j−1​,最终,答案为 ∑ i = 1 30 d p i , 7 \sum_{i=1}^{30}dp_{i,7} ∑i=130​dpi,7​。

    #include 
    int ans = 0, dp[11] = { 1 };
    int main() {
        for (int i = 1; i 
            int loss = 0;
            for (int j = 10; j; --j) {
                loss += dp[j - 1];
                dp[j] = dp[j - 1];
            }
            dp[0] = loss;
            ans += dp[7];
        }
        printf("%d", ans);
    }
    
        if (depth  n) return;
        if (score == 100) return;
        if (score == target) ++ans;
        dfs(depth + 1, score + 10);
        dfs(depth + 1, 0);
    }
    int main() {
        printf("%d", (dfs(0, 0), ans));
    }
    

    试题 C: 平方差

    时间限制: 1.0 s 1.0\mathrm s 1.0s 内存限制: 256.0 M B 256.0\mathrm{MB} 256.0MB 本题总分: 10 10 10 分


    【问题描述】

      给定 L , R L, R L,R,问 L ≤ x ≤ R L ≤ x ≤ R L≤x≤R 中有多少个数 x x x 满足存在整数 y , z y,z y,z 使得 x = y 2 − z 2 x = y^2 − z^2 x=y2−z2。

    【输入格式】

      输入一行包含两个整数 L, R,用一个空格分隔。

    【输出格式】

      输出一行包含一个整数满足题目给定条件的 x x x 的数量。

    【样例输入】

    1 5
    

    【样例输出】

    4
    

    【样例说明】

       1 = 1 2 − 0 2 ; 1 = 1^2 − 0^2; 1=12−02;

       3 = 2 2 − 1 2 ; 3 = 2^2 − 1^2; 3=22−12;

       4 = 2 2 − 0 2 ; 4 = 2^2 − 0^2; 4=22−02;

       5 = 3 2 − 2 2 。 5 = 3^2 − 2^2 。 5=32−22。

    【评测用例规模与约定】

      对于 40 % 40\% 40% 的评测用例, L R ≤ 5000 L R ≤ 5000 LR≤5000;

      对于所有评测用例, 1 ≤ L ≤ R ≤ 1 0 9 1 ≤ L ≤ R ≤ 10^9 1≤L≤R≤109。


    基本数论


    不知道基不基本,反正我老民科没见过,顺手推推。

    对偶数 a a a ,平方数都可以表示成 2 2 ( a 2 ) 2 2^2(\frac a2)^2 22(2a​)2,即 a 2 ≡ 0 ( m o d 4 ) a^2 \equiv 0\pmod 4 a2≡0(mod4);对奇数 b b b ,平方数都可以表示成 ( b − 1 ) 2 + 2 b − 1 (b-1)^2+2b-1 (b−1)2+2b−1,即 b 2 ≡ 1 ( m o d 4 ) b^2 \equiv 1\pmod 4 b2≡1(mod4);

    那么就奇偶性而言 a − a 、 b − a 、 a − b a-a、b-a、a-b a−a、b−a、a−b 的结果为 0 、 1 、 3 ( m o d 4 ) 0、1、3\pmod 4 0、1、3(mod4),容易得知 x x x 不可能被分解成 4 c + 2 4c + 2 4c+2 的形式。那么 4 c + k , 0 ≤ 4 c + k ≤ R , k ∈ { 0 , 1 , 3 } 4c+k,0\leq 4c+k\leq R,k\in\{0,1,3\} 4c+k,0≤4c+k≤R,k∈{0,1,3} 一定可以被 y , z , 0 ≤ z n u m ( l , r ) ∣ |inv[l,r]>num[l,r]|=|inv(l,r)>num(l,r)| ∣inv[l,r]>num[l,r]∣=∣inv(l,r)>num(l,r)∣,当 E E E 成立时, ∣ E ∣ = 1 |E|=1 ∣E∣=1,否则等于 0 0 0;

    当 n u m [ r ] num[l] 的判别过程,有 i n v [ l , r ]


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码