蓝桥真题讲解
第一题
题目链接
0商品库存管理 - 蓝桥云课
题目解析
代码原理
暴力解法
代码编写
暴力解法代码
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
const int N = 300030;
int optation[N][2];
int res[N];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n = 0, m = 0;
cin >> n >> m;
for(int i = 0; i < m; i++)
{
cin >> optation[i][0] >> optation[i][1];
}
for(int i = 0; i < m; i++)
{
for(int j = optation[i][0]; j <= optation[i][1]; j++)
{
res[j]++;
}
}
for(int i = 0; i < m; i++)
{
int ans = 0;
for(int j = 1; j <= n; j++)
{
int tmp = res[j];
if(j >= optation[i][0] && j <= optation[i][1]) tmp--;
if(tmp == 0) ans++;
}
cout << ans << endl;
}
return 0;
}
结果图
所以,各位小伙伴看到自己的结果只有30%的时候不要惊讶,如果是比赛,在比赛中能用这个方法解决这道题就已经很不错了。当然既然博主已经在目录中做了小标题了,自然还有其他更好的方法
本题总结
暴力破解,对于刚接触这些算法题的小伙伴会有一种现象,题看懂了,但是无从下手,那么暴力破解就是一个很好的解法,那么暴力破解是如何操作呢,首先根据题目要求,去模拟一遍这个过程,这里主要是理解题意,题意懂了之后,再结合所学去解题即可,这里的所学如循环判断语句这些等等,有点麻烦的是需要做题者将每一个环节都要考虑的清清楚楚,当然对于初学者总是有点难度的,毕竟万事开头难嘛。
从这题开始我们进入蓝桥填空题的练习
第二题
题目链接
0隔行变色 - 蓝桥云课
题目解析
代码原理
略
代码编写
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
int ret = 0;
for(int i = 21; i <= 50; i++)
{
if(i % 2 != 0)
ret++;
}
cout << ret;
return 0;
}
第三题
题目链接
0立方尾不变 - 蓝桥云课
题目解析
代码原理
题目很简单,因此没啥好讲的,相信各位小伙伴都是有实力的。
代码编写
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
// 请在此输入您的代码
int ret = 0;
for(ll i = 1; i < 10000; i++)
{
if(i < 10)
{
if(i * i * i % 10 == i) ret++;
}
else if(i < 100)
{
if(i * i * i % 100 == i) ret++;
}
else if(i < 1000)
{
if(i * i * i % 1000 == i) ret++;
}
else if(i < 10000)
{
if(i * i * i % 10000 == i) ret++;
}
}
cout << ret;
return 0;
}
第四题
题目链接
0猴子分香蕉 - 蓝桥云课
题目解析
代码原理
代码编写
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n = 100000;
for(int i = 6; i <= n; i++)
{
int tmp = i;
if((tmp - 1) % 5 != 0) continue;
tmp -= 1;
tmp = tmp - tmp / 5;
if(tmp <= 0 || (tmp - 2) % 5 != 0) continue;
tmp -= 2;
tmp = tmp - tmp / 5;
if(tmp <= 0 || (tmp - 3) % 5 != 0) continue;
tmp -= 3;
tmp = tmp - tmp / 5;
if(tmp <= 0 || (tmp - 4) % 5 != 0) continue;
tmp -= 4;
tmp = tmp - tmp / 5;
if(tmp <= 0 || tmp % 5 != 0) continue;
cout << i << endl;
break;
}
return 0;
}
第五题
题目链接
0矩形切割 - 蓝桥云课
题目解析
代码原理
代码编写
#include <iostream>
using namespace std;
int main()
{
// 请在此输入您的代码
// cout << 21;
int n = 2019, m = 324, sum = 0;
while(n % m != 0)
{
sum += n / m;
int d = m;
m = n % m;
n = d;
}
sum += n / m;
cout << sum << endl;
return 0;
}
第六题
题目链接
0年号字串 - 蓝桥云课
题目解析
代码原理
首先是26进制,因为有26个字母。然后根据每次取26的余数去匹配26个字母,注意最后string类型变量中的字符串是逆序的,记得按升序输出
代码编写
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int n = 2019;
string ans;
while(n)
{
int tmp = n % 26;
n /= 26;
ans += s[tmp - 1];
}
for(int i=ans.size()-1;i>=0;i--)cout<<ans[i];
return 0;
}
本篇蓝桥真题讲解就先到这里,我们下期文章再见!