C++蓝桥真题讲解
本篇文章和大家一起来试试一些简单的蓝桥真题
注意:本篇文章将全程使用devc++和蓝桥官网,如果有小伙伴找不到devc++安装包的可以本篇文章中下载。
赛前必知点
1.正式比赛时,先从蓝桥官网下载题目文档,然后用devc++进行编译,对于习惯了vs、VS coed的编译器的小伙伴需要提前去适应devc++这个编译器,当然博主也会在本篇文章中放置devc++的下载链接
2.蓝桥杯的题目一共分为两种题型:填空题和编程题,填空题提交答案即可,编程题需要提交完整代码
3.正式比赛是没有测试用例给你测试,你只能用题目中给的用例去测试,因此,比赛中你要在紧张中保持冷静,要保持思路清晰
4.devc++不会和vs一样有明显的错误提示,因此在代码运行时,要学会看懂devc++报错的那一栏
5.编写代码时,肯定会有小失误,因此,我们要静下心来走读代码。
当然啦,博主也会在这系列的文章结束前,通过刷真题带大家总结出如何避免一些小问题的出现
devc++安装包链接
通过网盘分享的文件:lanqiaobei
链接: https://pan.baidu.com/s/1QC0ngsMiN9M1P0Ezsk--Rg?pwd=6666 提取码: 6666
第一题
题目解析
通过读题,我们可以知道
题目要求:求最大正方形的边长
知识转换: 正方形的面积 = 边长 * 边长
代码编写
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
long long two = 7385137888721, one = 10470245;
int max_len = pow(4 * two + one,0.5);//这里要是看不太懂的小伙伴看一看下面的这串代码
cout << max_len - 1 << endl;
return 0;
}
注意这个for循环可以省略,因此这个代码并不是很好,但仅供参考。
第二题
题目解析
首先点击log.txt下载这个文件,然后打开这个文件,博主建议大家用记事本打开这个文件
因为在记事本的左下角可以看到它的总行数,以便我们后续使用。
那么这一长串的数据我们是不是看到会感觉很懵,没关系,我们先读题。
重点:
1.对于连续的 KK 次正确敲击,如果任意连续的两次敲击间间隔时间都小于等于 1s1s,那么我们称这是一次 KK 连击
2.每条记录有三个字段,依次为正确的敲击字符、小蓝打出的字符、 打出字符的时间对应的毫秒时间戳。
代码原理
代码编写
#include<iostream>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll max_len = 2010;
char a[max_len], b[max_len];
ll t[max_len];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll count = 0, ret = 0;
for(ll i = 1; i <= 2000; i++)
{
cin >> a[i] >> b[i] >> t[i];
}
for(ll i = 2; i <= 2000; i++)
{
if(a[i] == b[i] && t[i]- t[i - 1] <= 1000)
{
count++;
ret = max(ret,count);
}
else if(a[i] == b[i] && t[i] - t[i - 1] > 1000)
count = 1;
else
{
count = 0;
}
}
cout << ret;
return 0;
}
第三题
题目解析
重点:
1.诗意数字:连续的数字相加
2.要删除的是非连续的数字相加的数,也就是缺乏诗意的数字
代码原理
代码编写
#include<iostream>
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll max_len = 200010;
ll a[max_len];
bool check(ll x)
{
for(ll i = 0; pow(2,i) < pow(10,16); i++)
{
if(x == pow(2,i))
return true;
}
return false;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n = 0,count = 0;
cin >> n;
for(ll i = 1; i <= n; i++)
{
cin >> a[i];
}
for(ll i = 1; i <= n; i++)
{
if(check(a[i]))//输出非诗意数字
{
count++;
}
}
cout << count;
return 0;
}
本篇文章的内容就先到这里,我们下期文章再见!!!
记得一键三联哦!!!