第十届蓝桥杯C++省赛A组

试题 A: 平方和#(暴力)

本题总分:5 分

【问题描述】
小明对数位中含有 2、0、1、9 的数字很感兴趣,在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574,平方和是 14362。注意,平方和是指将每个数分别平方后求和。
请问,在 1 到 2019 中,所有这样的数的平方和是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
提示:如果你编写程序计算,发现结果是负的,请仔细检查自己的程序, 不要怀疑考场的编程软件。

2658417853

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
int is2019(int n)
{
    int t;
    while(n>0){//n==0时退出
        t=n%10;
        if(t==2||t==0||t==1||t==9)
            return 1;
        n=n/10;
    }
    return 0;
}
int main()
{
   long long m=0;
   for(int i=1;i<=2019;i++){
      if(is2019(i))
        m=m+i*i;
   }
   cout<<m;
   return 0;
}
//输出
//2658417853

试题 B: 数列求值#(暴力)

本题总分:5 分

【问题描述】
给定数列 1, 1, 1, 3, 5, 9, 17, …,从第 4 项开始,每项都是前 3 项的和。求
第 20190324 项的最后 4 位数字。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个 4 位整数(提示:答案的千位不为 0),在提交答案时只填写这个整数,填写多余的内容将无法得分。

4659

#include <iostream>
using namespace std;
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
#include<math.h>
int main()
{
   int m=0;
   int f1=1,f2=1,f3=1;
   for(int i=4;i<=20190324;i++){
      m=((f1+f2)%10000+f3)%10000;
      cout<<m<<endl;
      f1=f2;
      f2=f3;
      f3=m;
   }
   return 0;
}

短短十余行代码,居然整整运行了40分钟。。。
并且还不是用递归写的,递归运行不出来
在这里插入图片描述

试题 C: 最大降雨量#(构造)

本题总分:10 分

【问题描述】
由于沙之国长年干旱,法师小明准备施展自己的一个神秘法术来求雨。
这个法术需要用到他手中的 49 张法术符,上面分别写着 1 至 49 这 49 个
数字。法术一共持续 7 周,每天小明都要使用一张法术符,法术符不能重复使用。
每周,小明施展法术产生的能量为这周 7 张法术符上数字的中位数。法术
施展完 7 周后,求雨将获得成功,降雨量为 7 周能量的中位数。
由于干旱太久,小明希望这次求雨的降雨量尽可能大,请大最大值是多少?
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

34

证明:无法找到比34更优的方案了。如下图,假设每周选的数已经排好序

第一周: x x x x x x x ( x1,x2,x3,x4,x5,x6 满足 x1<x2<x3<x4<x5<x6)
第二周: x x x x x x x
第三周: x x x x x x x
第四周: x x x x x x x
第五周: x x x x x x x
第六周: x x x x x x x
第七周: x x x x x x x

则标记红色的是每周的中位数:

第一周: x x x x x x x
第二周: x x x x x x x
第三周: x x x x x x x
第四周: x x x x x x x
第五周: x x x x x x x
第六周: x x x x x x x
第七周: x x x x x x x

此时不看第几周,每一行里:红色的x右边的x必然比x大。

假设上面的七行按行按照x由小到大重新排序后得到

x x x x1 x x x
x x x x2 x x x
x x x x3 x x x
x x x x4 x x x
x x x x5 x x x
x x x x6 x x x
x x x x7 x x x

则x1<x2<x3<x4<x5<x6<x7 题目要求的中位数的中位数就是x4了

问题是x4最大能取到多少呢?注意到上图中x4右下角(如下图)的元素都应比x4大。。(共15个)

因此答案为49-15=34

x x x x x x x
x x x x x x x
x x x x x x x
x x x x4 x x x
x x x x x x x
x x x x x x x
x x x x x x x

发布了97 篇原创文章 · 获赞 101 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/practical_sharp/article/details/102647983