您的位置:首页 > 其它

2020年第十一届蓝桥杯省赛 第二场(10月17日)B组个人题解

2020-10-18 23:18 1221 查看

A

找出来1到2020之间数位为2的数量。

不用特别去考虑,直接循环即可

B

求分子分母最小因子为1的。

跑两个for循环,写一个gcd就可以了

答案:2481215

int main() {// freopen("in.txt","r",stdin);ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int cnt = 0;for (int i = 1; i <= 2020; ++i)for (int j = 1; j <= 2020; ++j) cnt += __gcd(i, j) == 1;cout << cnt << endl;}
//另一种写法int main() {// freopen("in.txt","r",stdin);ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int cnt = 0;for (int i = 1; i <= 2020; ++i)for (int j = i + 1; j <= 2020; ++j) cnt += __gcd(i, j) == 1;cout << (cnt << 1) + 1 << endl;}//本质是一样的

C

蛇形图(20,20)这个位置的数是几。

可以用等差数列做一下。

或者暴力跑

答案:761

// Author : RioTian// Time : 20/10/18#include <bits/stdc++.h>using namespace std;typedef long long ll;int main() {// freopen("in.txt","r",stdin);ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);bool flag = true;for (int x = 1, y = 1, k = 1;; k++) {if (x == 20 && y == 20) {cout << k << endl;break;}if (flag)if (x - 1)  --x, ++y;else  ++y, flag = false;else if (y - 1)  ++x, --y;else ++x, flag = true;}}

D

跑步

从2000/01/01到202010/01

周一跑2km,月初跑2km,其他都跑1km

直接模拟就好了

E

感觉好多大佬都做出来了

思路和代码来自网络:

一共七个灯管,状态压缩枚举所有状态,然后dfs搜一下是否连通。

F

计算合格率,优秀率

扩大计算即可

G

从输入的年份开始枚举到9999,找到符合条件的就break;

找回文类型的年份+月份+日期

20200202 和 ABABBABA 类型

个人思路是直接暴力向上递推时间

H

算所有区间不同字母的个数。

第一眼想到用树状数组解,但太久没写了。放弃。。。

直接暴力模拟,骗50%数据

赛后重新想了下,应该计算每个字母的贡献值,假设每个区间都是第一个出现的字母贡献,则每个字母贡献值是左边没出现相同字母乘上右边到最后的长度

i

没怎么接触过,估计凉了。

j

emmm,完全打表写前面的数据了

蒟蒻表示希望不会打铁

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐