【蓝桥杯历年题】2020蓝桥杯A组省赛第三场
作者:互联网
文章目录
试题 A: 数青蛙(模拟)
>答案:353
个位数一位;11~19以及10的倍数两位;其余情况三位
#include <iostream>
using namespace std;
int get(int x)
{
if(x >= 1 && x <= 10) return 1;
else if((x >= 11 && x <= 20) || x == 30 || x == 40 || x == 50 || x == 60 || x == 70 || x == 80 ) return 2;
else return 3;
}
int main()
{
int res = 0;
res += 10 * 20;
for(int i = 1;i <= 20;i ++ ) res += get(i); // 第一个数字
for(int i = 1;i <= 20;i ++ ) res += get(i); // 第二个数字
for(int i = 2;i <= 40;i += 2 ) res += get(i); // 第一个数字
for(int i = 4;i <= 80;i += 4 ) res += get(i); // 第一个数字
cout << res << endl;
return 0;
}
试题 B: 互质(最大公约数)
>答案:1008
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
return b ? gcd(b,a % b) : a;
}
int main()
{
int res = 0;
for(int i = 1;i <= 2020;i ++ )
if(gcd(i,1018) == 1) res ++;
cout << res << endl;
return 0;
}
试题 C: 车牌(爆搜)
>答案:4002750
#include <iostream>
using namespace std;
int res;
void dfs(int u,int l1,int l2) // u表示搜到第几位,
// 从0开始,l1表示上一位是多少,l2表示上2位是多少
{
if(u == 6) {
res ++;
return;
}
if(u < 3)
{
for(int i = 0;i <= 15;i ++ ){
if(i == l1 && i == l2 && l1 == l2) continue;
dfs(u + 1,i,l1);
}
}else{
for(int i = 0;i <= 9;i ++ ){
if(i == l1 && i == l2 && l1 == l2) continue;
dfs(u + 1,i,l1);
}
}
}
int main()
{
dfs(0,-1,-1);
cout << res << endl;
return 0;
}
试题 D: Fibonacci 集合(多路归并)
>答案:41269
类似题 – 62. 丑数
#include <iostream>
#include <vector>
using namespace std;
vector<long long> q;
int main()
{
q.push_back(1);
q.push_back(2);
q.push_back(3);
int i =0,j = 0,k = 0;
while(q.size() < 2020)
{
long long t = min(3 * q[i] + 2,min(5 * q[j] + 3,8 * q[k] + 5));
q.push_back(t);
if(3 * q[i] + 2 == t) i ++ ;
if(5 * q[j] + 3 == t) j ++ ;
if(8 * q[k] + 5 == t) k ++ ;
}
cout << q.back() << endl;
return 0;
}
试题 E: 上升子串
标签:试题,int,res,蓝桥,2020,&&,l1,l2,第三场 来源: https://blog.csdn.net/weixin_43154149/article/details/115617722