==========================================
2019-2021蓝桥杯C++ B组真题题解:
2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解
2020第十一届蓝桥杯大赛软件类省赛第二场C++ B组真题题解
2021第十二届蓝桥杯大赛软件赛省赛C++ B组真题题解

==========================================

目录

  • 试题A:空间(5分)
  • 试题B:卡片(5分)
  • 试题C:直线(10分)
  • 试题D:货物摆放(10分)
  • 试题E:路径(15分)
  • 试题F:时间显示(15分)
  • 试题G:砝码称重(20分)
  • 试题H:杨辉三角形(20分)
  • 试题I:双向排序(25分)
  • 试题J:括号序列(25分)

试题A:空间(5分)

题目分析:
1MB=1024*1024B,1B=8位
题目代码:

#include <iostream>
using namespace std;
int main()
{cout<<256*1024*1024/4<<endl;
}

题目答案:

67108864

试题B:卡片(5分)

题目分析:
因为从1开始,所以1是用到最多的卡片,我们可以从1枚举,直到有2021个1
题目代码:

#include <iostream>
using namespace std;
int tot_1=2021;
void cal(int i)
{while(i>0){if(i%10==1)tot_1--;i=i/10;}
}
int main()
{int i=1;while(1){cal(i);if(tot_1<=0)break;i++;}cout<<"tot_1:"<<tot_1<<" i:"<<i<<endl;return 0;
}

题目答案:

3181

试题C:直线(10分)

题目分析:
枚举所有两个点的情况,然后利用直线公式 y=kx+b 求出k、b,利用结构体将k、b放入set集合,求出唯一直线的数量
注意:
1.k值为0或者无穷需要另外计算
2. b = (X2 * Y1-X1*Y2)/(X2-X1)
题目代码:

#include <bits/stdc++.h>
using namespace std;
struct Point {int x,y;Point() {}Point(int xx,int yy):x{xx},y{yy} {}
};
struct Line {double k,b;Line() {}Line(double kk,double bb):k{kk},b{bb} {}bool operator<(const Line &l)const{if(k==l.k)return b<l.b;return k<l.k;}
};
Point points[425];
set<Line> Lines;
void cal(Point a1,Point a2) {if(a2.x==a1.x||a2.y==a1.y)return;int bottom=a2.x-a1.x;int top=a2.y-a1.y;double k=top*1.0/bottom;//double b=(a1.y-k*a1.x)*1.0;double b=(a2.x*a1.y-a1.x*a2.y)*1.0/bottom;Lines.insert(Line(k,b));
}
int main() {int n=0;for(int x=0; x<20; x++) {for(int y=0; y<21; y++) {points[n].x=x;points[n].y=y;n++;}}for(int i=0; i<420; i++) {for(int j=i+1; j<420; j++) {cal(points[i],points[j]);}}cout<<Lines.size()+20+21<<endl;
}

题目答案:

40257

试题D:货物摆放(10分)

题目分析:
这道题主要考分解质因数
2021041820210418=2*3*3*3*17*131*2857* 5882353
排列组合:35 *(1+2+2+2+3)=2430 【因为有3个3】
题目代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{long long n;cin>>n;long long m=n;for(long long i=2;i<n/2;i++){if(m%i==0){cout<<i<<"*";m/=i;i--;}}return 0;
}

题目答案:

2430

试题E:路径(15分)

题目分析:
方法一:比较简单,相当于枚举的方法
从1到2021进行寻找每个的最短的路径,我想的是多循环几次看结果的变化,但是没想到第一次就是正确的结果
注:n*i/__gcd(n,i) 是求最小公倍数
细节参考:C++ 一行代码解决最大公约数和最小公倍数
题目代码:

#include <bits/stdc++.h>
using namespace std;
int num[2022];
void fun(int n)//寻找一个位置的最短路径(更新)
{int left=n-21,right=n+21;if(n-21<=0){left=1;}else if(n+21>2021){right=2021;}for(int i=left;i<=right;i++){num[n]=min(n*i/__gcd(n,i)+num[i],num[n]);   }
}
int main()
{for(int i=1;i<=2021;i++)num[i]=100000000;//进行初始化num[1]=0;for(int j=1;j<10;j++)//循环10次看结果{for(int i=1;i<=2021;i++){fun(i);}cout<<num[2021]<<endl;//查看结果}
}

题目答案:

10266837

试题F:时间显示(15分)


题目分析:
只要记清时间的换算单位即可
题目代码:

#include <iostream>
using namespace std;
#define Day 86400000
int main()
{long int time;cin>>time;time=time%Day;int Hour,minute,second;Hour=time/(60*60*1000);time=time%(60*60*1000);minute=time/(60*1000);time=time%(60*1000);second=time/1000;printf("%02d:%02d:%02d",Hour,minute,second);return 0;
}

试题G:砝码称重(20分)


题目分析:
题目代码:

#include <iostream>
using namespace std;
int dp[105][100005];
int weight[105];
int main()
{int N,sum=0;cin>>N;for(int i=1;i<=N;i++){cin>>weight[i];sum+=weight[i];}for(int i=1;i<=N;i++){for(int j=1;j<=sum;j++){dp[i][j]=dp[i-1][j];if(!dp[i][j]){if(weight[i]==j)dp[i][j]=1;if(dp[i-1][abs(j-weight[i])])dp[i][j]=1;if(dp[i-1][j+weight[i]])dp[i][j]=1;}}}long long res=0;for(int i=1;i<=sum;i++){if(dp[N][i])res++;}cout<<res<<endl;return 0;
}

试题H:杨辉三角形(20分)



题目分析:
题目代码:

#include <bits/stdc++.h>
using namespace std;
long long int n;
//求取某个点的值
long long int C(long long int a, long long int b) {long long int ret = 1;for (long long int i = a, j = 1; j <= b; i--, j++) {ret = ret * i / j;if (ret > n) {return n + 1;}}return ret;
}
long long getAns(int col)//二分法求某一行是否有等于n的数
{long long l=col,r=max((long long)col,n);while(l<r){long long mid=(l+r)/2;       if(C(mid,col)>=n){r=mid;}else{l=mid+1;}}if(C(l,col)==n){return l*(l+1)/2+col+1;//等差数列求和 }else{return 4e18;}
}
int main()
{cin>>n;if(n==1){cout<<"1"<<endl;return 0;}long long res=4e18;for(int i=0;i<=20;i++)//枚举20列 {res=min(res,getAns(i));}cout<<res<<endl;
}

试题I:双向排序(25分)


题目分析:
题目代码:

试题J:括号序列(25分)

题目分析:
题目代码:

2021第十二届蓝桥杯大赛软件赛省赛C++ B组真题题解相关推荐

  1. 2021第十二届蓝桥杯大赛软件赛省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  2. 第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目蓝桥杯JavaB组大赛软件类省赛第十二届第一场

    第十二届蓝桥杯大赛软件类省赛第一场 Java 大学 B 组题目 在线看题 题目PDF下载链接 百度云 链接:https://pan.baidu.com/s/1LSZvUV5dFwNtSbOshORU1 ...

  3. 2021 第十二届蓝桥杯大赛软件赛省赛(第二场),C/C++大学B组题解

    第1题 -- 求余 (5分) 直接输出2021%20 答案:1 #include<bits/stdc++.h> using namespace std;int main(){cout< ...

  4. 2021 第十二届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B 组

    概览 答案提交:01-04 直接做就行 树不太确定,不过感觉是完全二叉树,贪了一个 程序设计:06-10 两个15分题,大小写是送的.123开始暴力,后来想到的前缀和优化,再后来想到了O(1)找到区块 ...

  5. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  6. 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解

    ========================================== 2019-2021蓝桥杯C++ B组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解 2020第 ...

  7. 2022年第十三届蓝桥杯大赛软件类决赛C/C++/Java/Python真题

    1.2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 2022年第十三届蓝桥杯大赛软件类决赛C/C++大学A组真题 - 题库 - C语言网 2. 2022年第十三届蓝桥杯大赛软件类决赛C/ ...

  8. 第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组(2021年4月18日)

    第十二届蓝桥杯大赛软件赛省赛 Java 大学 B 组第一场 下载原题PDF 欢迎评论区留下答案讨论!!! 试题 A: ASC 本题总分:5 分 [问题描述] 已知大写字母 A 的 ASCII 码为 6 ...

  9. 第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组解析

    第十二届蓝桥杯大赛软件赛省赛 C/C++ 大学 B 组 试题 A: 空间 试题 B: 卡片 试题 C: 直线 试题 D: 货物摆放 试题 E: 路径 试题 F: 时间显示 试题 G: 砝码称重 试题 ...

  10. 第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组

    第十二届蓝桥杯大赛软件赛省赛Java 大学 C 组 试题 A: ASC 试题 B: 空间 试题 C: 卡片 试题 D: 相乘 试题 E: 路径 试题 F: 时间显示 试题 G: 最少砝码 试题 H: ...

最新文章

  1. java不需要导的包
  2. 2020-08淘宝特价版杀入短视频赛道,步步紧逼拼多多-10
  3. 17届中职计算机应用基础,西安交通大学17年3月课程考试《计算机应用基础》作业考核试题...
  4. CTFshow——Pwn(1)
  5. Windows环境下使用Linux命令
  6. 【Python】Python3.7.3 - 虚拟环境:pyvenv过时;使用python -m venv命令
  7. 拼多多再添新瓜!15 岁上浙大、22 岁获世界冠军的天才黑客 Flanker 疑因拒绝违法攻击被强制开除...
  8. 百度android输入法表情符号,百度输入法安卓5.8版推“史上最丰富颜文字库”
  9. 安卓listview点击空白事件_要权限才给用?安卓毒瘤APP滚蛋吧!
  10. 如何用Python快速实现区块链?
  11. jQuery三天复习.md
  12. Win10设置mac
  13. ImportError: No module named matplotlib.pyplot
  14. python可视化界面开发实例-Python可视化界面编程入门
  15. python可以手眼定标吗_机器人无标定手眼协调
  16. OC中内存管理(转)
  17. 《那些年啊,那些事——一个程序员的奋斗史》——19
  18. 数字价值观察室 实录 | 数字化在企业内部的“对立”和“统一”
  19. Dev C++简介和安装
  20. MyBatis快速入门(10)全局配置--settings

热门文章

  1. 一种圆面积公式的推导方法
  2. 33种著名汽车标志及来历
  3. 面向对象使用python-docx模块制作格式化文本(奖状生成器)
  4. Protocol(一)[概述]
  5. Protocol Buffer编译器安装
  6. 学做 方玲玉 网络营销_网络营销实务教学课件作者方玲玉参考答案第08讲网络产品独特卖点提炼课件.ppt...
  7. 如何注册域名的详细图文过程分享
  8. Android app打开手机应用市场上对应的应用
  9. 3.1 电磁干扰EMI
  10. 《C语言及程序设计》实践项目——输出小星星