2020蓝桥杯B组C++真题题解(一)

简介: 2020蓝桥杯B组C++真题题解

A:门牌制作


题目描述

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


小蓝要为一条街的住户制作门牌号。


这条街一共有 20202020 位住户,门牌号从 11 到 20202020 编号。


小蓝制作门牌的方法是先制作 00 到 99 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。


请问要制作所有的 1到 2020 号门牌,总共需要多少个字符 2?


运行限制

最大运行时间:1s

最大运行内存: 128M

填空题,挨个遍历,送分题,要把握住;

#include <iostream>
using namespace std;
int ans;
int main()
{
  for(int i=1;i<=2020;i++){
    int c=i;
    while(c){
      int a=c%10;
      if(a==2){
        ans++;
      }
      c=c/10;
    }
  }
  cout<<ans;
  return 0;
}

B:既约分数


题目描述

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


如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。


例如43,81,17, 都是既约分数。


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


运行限制

最大运行时间:2s

最大运行内存: 128M

没啥说的,遍历就行了,才2020个数;


#include <iostream>
using namespace std;
int gcd(int a,int b){
  return b==0?a:gcd(b,a%b);   //最大公约数
}
int main()
{
  int ans=0;
  for(int i=1;i<=2020;i++){
    for(int j=1;j<=2020;j++){
      if(gcd(i,j)==1){
        ans++;
      }
    }
  }
  cout<<ans;
  return 0;
}


C:蛇形填数


题目描述

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


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


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

...

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


运行限制

最大运行时间:1s

最大运行内存: 128M

找规律,每次增加4*(i-1),i为行列数,第二行第二列就是1+4*1=5,三就是5+4*2=13,以此类推,实在不行挨个列出来都行,so easy;

#include <iostream>
using namespace std;
int main()
{
  int sum=1;
  for(int i=1;i<20;i++){
    sum=sum+i*4;
  }
  cout<<sum;
  return 0;
}

D:七段码


题目描述

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


小蓝要用七段码数码管来表示一种特殊的文字。

上图给出了七段码数码管的一个图示,数码管中一共有 77 段可以发光的二 极管,分别标记为 a,b,c,d,e,f,g。


小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符 的表达时,要求所有发光的二极管是连成一片的。


例如:b 发光,其他二极管不发光可以用来表达一种字符。


例如 c 发光,其他二极管不发光可以用来表达一种字符。这种方案与上 一行的方案可以用来表示不同的字符,尽管看上去比较相似。


例如:a,b,c,d,e 发光,f,g 不发光可以用来表达一种字符。


例如:b,f 发光,其他二极管不发光则不能用来表达一种字符,因为发光 的二极管没有连成一片。


请问,小蓝可以用七段码数码管表达多少种不同的字符?


运行限制

最大运行时间:1s

最大运行内存: 128M

总通过次数: 6415  |  总提交次数: 7026  |  通过率: 91.3%


难度: 简单   标签: 填空题, 2020, 省赛


其实啊我感觉数一下用的时间更少

#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
set<string> num;
int c[4][2]={{-1,0},{0,-1},{1,0},{0,1}};
string a[3];
int d[5][5];
int ans;
void dfs(int x,int y,string r){
  d[x][y]--;
  for(int i=0;i<4;i++){
    int tx=x+c[i][0];
    int ty=y+c[i][1];
    if(tx>=0&&tx<3&&ty>=0&&ty<3&&d[tx][ty]!=0&&a[tx][ty]!='*'){
      sort(r.begin(),r.end());
      num.insert(r);
      if(d[1][1]==1&&tx==1&&ty==1){
        dfs(tx,ty,r);
    }
    else{
      dfs(tx,ty,r+a[tx][ty]);
    }
      num.insert(r);
    }
  }
  d[x][y]++;
}
int main()
{
  for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
      d[i][j]=1;
    }
  }
  d[1][1]=2;
  a[0]="abb";
  a[1]="fgc";
  a[2]="eed";
  for(int i=0;i<3;i++){
    for(int j=0;j<3;j++){
      if(a[i][j]!='*'){
        string r="";
        r+=a[i][j];
          dfs(i,j,r);
    }
    }
  }
//  for(set<string>::iterator it=num.begin();it!=num.end();it++){
//    cout<<*it<<endl;
//  }
  cout<<num.size()/2;
  return 0;
}


相关文章
|
1天前
|
算法 测试技术 C++
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(八)2013年第四届C/C++ B组蓝桥杯省赛真题
|
1天前
|
算法 C++ 数据格式
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(七)2014年第五届C/C++ B组蓝桥杯省赛真题
|
1天前
|
算法 C++
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(六)2015年第六届C/C++ B组蓝桥杯省赛真题
|
1天前
|
算法 C++
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(五)2016年第七届C/C++ B组蓝桥杯省赛真题
|
1天前
|
存储 人工智能 算法
小唐开始刷蓝桥(四)2017年第八届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(四)2017年第八届C/C++ B组蓝桥杯省赛真题
|
1天前
|
机器学习/深度学习 存储 人工智能
小唐开始刷蓝桥(三)2018年第九届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(三)2018年第九届C/C++ B组蓝桥杯省赛真题
|
1天前
|
存储 人工智能 Java
小唐开始刷蓝桥(二)2019年第十届C/C++ B组蓝桥杯省赛真题
小唐开始刷蓝桥(二)2019年第十届C/C++ B组蓝桥杯省赛真题
|
1天前
|
人工智能 搜索推荐 C++
小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题
小唐开始刷蓝桥(一)2020年第十一届C/C++ B组第二场蓝桥杯省赛真题
|
2天前
|
存储 人工智能 算法
第十四届蓝桥杯C++B组编程题题目以及题解
第十四届蓝桥杯C++B组编程题题目以及题解
|
8天前
|
测试技术
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)