蓝桥杯·寒假百校真题大联赛(大学B组)(第3期)

一,门牌制作

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
小蓝要为一条街的住户制作门牌号。
这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。
小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、71、0、1、7,即需要 11 个字符 00,22 个字符 11,11 个字符 77。
请问要制作所有的 11 到 20202020 号门牌,总共需要多少个字符 22?

运行限制
最大运行时间:1s
最大运行内存: 128M
分析:python和c++都可以做,但是python非常快:
python解题:

sum=0
for a in range(1,2021):
    str1=str(a)
    for i in str1:
        if(i=='2'):
            sum=sum+1
print(sum)    

答案:

624

二,既约分数

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如果一个分数的分子和分母的最大公约数是 11,这个分数称为既约分数。
例如,蓝桥杯·寒假百校真题大联赛(大学B组)(第3期) 都是既约分数。

请问,有多少个既约分数,分子和分母都是 11 到 20202020 之间的整数(包括 11 和 20202020)?

运行限制 最大运行时间:2s 最大运行内存: 128M
c++解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,sum=0;
   for(int i=1;i<=2020;i++)
   {
       for(int j=1;j<=2020;j++)
       {
           a=max(i,j);
           int p;
           for(p=2;p<a;p++)
           {
               if(i%p==0&&j%p==0)
                break;
           }
           if(p>=a&&i!=j)
           {
            //cout<<i<<'/'<<j<<endl;
               sum++;
           }
       }
   }
   cout<<sum+1;
}

答案:

2481215

总结:
最后加一是为了算上1

三,蛇形填数

题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。

1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...

copy
容易看出矩阵第二行第二列中的数是 55。请你计算矩阵中第 2020 行第 2020 列的数是多少?

运行限制 最大运行时间:1s 最大运行内存: 128M
c++解法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a=1,b=1;
    for(int i=1;i<20;i++)
    {
        a+=b*4;
        b++;
    }
    cout<<a;

}

蓝桥杯·寒假百校真题大联赛(大学B组)(第3期)
心得:规律题

四,成绩统计

题目描述
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。

如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。

请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整 数。

输入描述
输入的第一行包含一个整数 n\ (1 \leq n \leq 10^4)n (1≤n≤10
4
),表示考试人数。

接下来 nn 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。

输出描述
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分 四舍五入保留整数。

输入输出样例
示例
输入

7
80
92
56
74
88
100
0

输出

71%
43%
运行限制 最大运行时间:1s 最大运行内存: 256M
c++代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int x,a,x1;
    cin>>x;
    int j=0,y=0;
    x1=x;
    while(x--)
    {
        cin>>a;
        if(a>=60)
        {
            j++;
        }
        if(a>=85)
        {
            y++;
        }
    }
    int j1,y1;
    j1=((j/double(x1))*1000+5)/10;
    y1=((y/double(x1))*1000+5)/10;
    cout<<j1<<"%"<<endl<<y1<<"%";

}
上一篇:全网最全python教程,从零到精通(学python有它就够必收藏)


下一篇:OpenStack Juno系列之控制节点搭建