2020-10-17 十一届蓝桥杯省赛B组第二场C++ 白话代码
2020-10-17 十一届蓝桥杯B组第二场C++
我是菜鸡就是自己记录一下
题目
- 2020-10-17 十一届蓝桥杯B组第二场C++
- 试题 A: 门牌制作(5)
- 试题 B: 既约分数(5)
- 试题 C: 蛇形填数(10)
- 试题 D:跑步锻炼(10)
- 试题 E: 七段码(15)
- 试题 F: 成绩统计(15)
- 试题 G: 回文日期(20)
- 试题 H: 子串分值和(20)
- 试题 I: 平面切分(25)
- 试题 J: 字串排序(25)
- 总结
试题 A: 门牌制作(5)
这个题搞个判断方式,暴力遍历一遍即可
答案是624
我考试时居然忘了设置一个数有多个2的情况我是真的混呐
#include<iostream>
using namespace std;
int ans = 0;
int temp;
void judge(int n) //某个数有几个2就加到ans上
{while (n){temp = n % 10;if (temp == 2){ans++;}n /= 10;}}
int main()
{for (int i = 1; i <= 2020; i++){judge(i);}cout << ans;
}
试题 B: 既约分数(5)
先说我的思路,首先用一个gcd函数判断最大公约数
然后双重for循环暴力了就可以
答案是2481215
#include<iostream>
using namespace std;
int ans = 0;
int gcd(int a, int b) //辗转相除法 比如a:45 b:13 ,//45%13=6,b左移变为a:13,b变成6//直至最后余数即b变为零 这次循环的a就是他俩的最大公约数
{return b == 0 ? a : gcd(b,a % b);
}
int main()
{for (int i = 1; i <= 2020; i++){for (int j = 1; j <= 2020; j++){if (gcd(i, j) == 1) {ans++;}}}cout << ans;
}
试题 C: 蛇形填数(10)
这个题可以侧着看,就像一个大三角形
第一层有一个数 第二层有两个数 第n层有n个数
另外第二行第二列 是在三角形的第三层
第三行第三列 是在三角形的第五层
第n行第n列 在 三角形的2n-1层
题中20行20列 对应着39层 从左往右第20个数因为图中奇数层都是从左往右增长的所以求出前38层之和 再加上20就可以
前n项和公式n(a1+an)/2=38*(1+38)/2=741
741+20=761 也就是答案
试题 D:跑步锻炼(10)
这个题麻烦但称不上难 当然作为菜鸡 我又错了
模拟日期变化即可 注意闰年判断以及年月日星期的更替就好
考试时候搞错了贼鸡儿气
我的代码
#include<iostream>
using namespace std;
int ans = 0;
int mouth[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };
bool judge(int n) //闰年
{if (n % 400 == 0 || (n % 100 != 0 && n % 4 == 0)){return 1;}return 0;
}
int main()
{int nn, yy, rr;int xingqi = 6;for (nn = 2000, yy = 1, rr = 1; nn < 2020 || yy < 10 || rr <= 1; rr++){if (rr > mouth[yy]){rr -= mouth[yy];yy++;if (yy > 12){yy -= 12;nn++;if (judge(nn)) mouth[2] = 29; //判断闰年 因为已经看了2000是闰年所以最开始让mouth2=29了else mouth[2] = 28;}}if (rr == 1 || xingqi == 1) ans += 2; //加步数else ans += 1;xingqi = (xingqi + 1) % 7;}cout << ans;
}
试题 E: 七段码(15)
看到这个题是自闭的,感觉和dfs啥的有关系但是不会运用,然后闲着也是闲着
暴力杯就硬暴力试了试 当然又错了- -正确答案应该是80
我的是82 但不知道哪错了
我的代码
#include<iostream>
using namespace std;
int ans = 0;
bool judge(int a, int b, int c, int d, int e, int f, int g)
{int sum = a + b + c + d + e + f + g;if (a == 1) //与a相连的有b和f{if (b == 0 && f == 0&&sum>1) return 0;}if (b == 1) //与b相连的有a和c g{if (a == 0 && c == 0 && g == 0 && sum > 1) return 0;}if (c == 1) //与c相连的有bgd{if (b == 0 && d == 0 && g == 0 && sum > 1) return 0;}if (d == 1) //与d相连的有ce{if (c == 0 && e == 0 && sum > 1) return 0;}if (e == 1) //与e相连的有dgf{if (f == 0 && d == 0 && g == 0 && sum > 1) return 0;}if (f == 1) //与f相连的有gae{if (a == 0 && e == 0 && g == 0 && sum > 1) return 0;}if (g == 1) //与g相连的有cbfe{if (b == 0 && c == 0 && e == 0 && f == 0 && sum > 1) return 0;}//全0页不行哦if (a == 0 && b == 0 && c == 0 && d == 0 && f == 0 && g == 0) return 0;return 1;
}
int main()
{int a, b, c, d, e, f, g;for (a = 0; a <= 1; a++){for (b = 0; b <= 1; b++){for (c = 0; c <= 1; c++){for (d = 0; d <= 1; d++){for (e = 0; e <= 1; e++){for (f = 0; f <= 1; f++){for (g = 0; g <= 1; g++){if (judge(a, b, c, d, e, f, g) == 1) ans++;}}}}}}}cout << ans;
}
大佬的 输出是80
/*
* @Date: 2020-10-17 21:20:03
* @LastEditTime: 2020-10-17 21:27:00
* @Author's blog: nuoyanli
* @Description: Plum blossom from the bchter cold!
*/
#include <bits/stdc++.h>
using namespace std;
const int N = 10;
char a[N][N];
int n, m, vis[N][N];void dfs(int r, int c, int f) {if (r < 0 || r >= m || c < 0 || c >= n) {return;}if (vis[r][c] > 0 || a[r][c] != '1') {return;}vis[r][c] = f;for (int i = -1; i <= 1; i++){for (int j = -1; j <= 1; j++){if (i != 0 || j != 0){dfs(r + i, c + j, f);}}}
}int main() {int sum = 0;freopen("in.txt", "r", stdin);while (~scanf("%d%d", &m, &n)) {for (int i = 0; i < m; i++){scanf("%s", a[i]);}memset(vis, 0, sizeof(vis));int cnt = 0;for (int i = 0; i < m; i++){for (int j = 0; j < n; j++){if (vis[i][j] == 0 && a[i][j] == '1'){dfs(i, j, ++cnt);}}}if (cnt == 1){sum += 1;}}printf("%d\n", sum);return 0;
}
试题 F: 成绩统计(15)
水题 就是有个四舍五入
样例输入:7 80 92 45 74 88 100 0
#include<iostream>
using namespace std;
int main()
{int n,jige=0,youxiu=0;cin >> n;int* a = new int[n];for (int i = 0; i < n; i++){cin >> a[i];if (a[i] >= 60){jige++;if (a[i] >= 85){youxiu++;}}}//四舍五入 因为计算机默认是吧小数都去掉,那我们就多加0.5,这样就变相让计算机实现了四舍五入/*double ji = jige*100 + n * 0.5;double you = youxiu*100 + n * 0.5;*/cout << (int)(jige * 100 + n * 0.5) / n <<"%"<< endl << (int)(youxiu * 100 + n * 0.5) / n <<"%" ;
}
试题 G: 回文日期(20)
借用上一个相关试题代码
本题因为最大就是8999年的最后一天所以条件就是小于9000年即可
我当然是做错了
#include<iostream>
#include<iomanip>
using namespace std;
bool flag = 0;
int mouth[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };
bool judge(int n) //闰年
{if (n % 400 == 0 || (n % 100 != 0 && n % 4 == 0)){return 1;}return 0;
}
bool judge1(int nn, int yy, int rr)
{ //第一对应 第八 第二对应第七 第三对应第六if (nn / 1000 == rr % 10 && nn / 100 % 10 == rr / 10 % 10 && nn / 10 % 10 == yy % 10 && nn % 10 == yy / 10 % 10){return 1;}return 0;
}
bool judge2(int nn, int yy, int rr)
{if (judge1(nn, yy, rr)){if (nn / 1000 == nn / 10 % 10 && nn % 10 == nn / 100 % 10){return 1;}}return 0;
}
int main()
{int nn, yy, rr;int xingqi = 6;int n;cin >> n;nn = n / 10000;yy = nn / 100 % 10 + nn / 1000 % 10 * 10;rr = nn % 10 + nn / 10 % 10 * 10;for ( ;nn < 9000; rr++){if (rr > mouth[yy]){rr -= mouth[yy];yy++;if (yy > 12){yy -= 12;nn++;if (judge(nn)) mouth[2] = 29; //判断闰年 因为已经看了2000是闰年所以最开始让mouth2=29了else mouth[2] = 28;}}if (judge1(nn, yy, rr))//是不是回文{if (flag==0) //只输出一次回文{//注意输出填充cout << nn << setfill('0') << setw(2)<<yy << setfill('0') << setw(2) << rr << endl;flag = 1;}if (judge2(nn, yy, rr)){cout << nn << setfill('0') << setw(2) << yy << setfill('0') << setw(2) << rr; return 0;}}}return 0;
}
试题 H: 子串分值和(20)
我的思路是一个函数用来判断字串的权值
主函数用两个for循环分别确定开始位置和长度来遍历
#include<iostream>
using namespace std;
int ans = 0;
int a[27];
void fenzhi(string str, int i, int j) //确定某个子串的分值
{//a[27] = { 0 };int a[27] = { 0 };for (int t = j; t < j + i; t++){if (a[str[t] - 'a'] == 0){ans++; a[str[t] - 'a'] = 1;}}
}
int main()
{string str;cin >> str;for (int i = 1; i <= str.length(); i++) //子串长度{for (int j = 0; j < str.length(); j++) //开始位置{if (i + j <= str.length()) //长度足够或者说允许{fenzhi(str, i, j);}}}cout << ans;
}
试题 I: 平面切分(25)
别问问就是不会 待补
试题 J: 字串排序(25)
不会待补
总结
算下来就对了4个题 50分? 事后再做感觉也不是很难,还是自己积累的不够深
绝壁连个三都混不到啊我的三百块么得了唉- -
2020-10-17 十一届蓝桥杯省赛B组第二场C++ 白话代码相关推荐
- 2020年第十一届蓝桥杯C/C++ B组第二场省赛真题
2020年第十一届蓝桥杯C/C++ B组第二场省赛真题 第一题 门牌制作 题目描述 小蓝要为一条街的住户制作门牌号.这条街一共有2020位住户,门牌号从1到2020编号.小蓝制作门牌的方法是先制作0到 ...
- 2020第十一届蓝桥杯省赛C组第一场
2020第十一届蓝桥杯省赛C组第一场 试题 A: 指数计算 问题描述 题解 试题 B: 解密 问题描述 题解 试题 C: 跑步训练 问题描述 题解 试题 D: 合并检测 问题描述 题解 试题 E: R ...
- 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数
2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...
- 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数
这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...
- 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数
2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...
- 2020年软件类第十一届蓝桥杯 省赛 python组(人生苦短,我用python)
2020年软件类第十一届蓝桥杯 省赛 python组 题解 文章目录 2020年软件类第十一届蓝桥杯 省赛 python组 题解 试题 A: 门牌制作 试题 B: 寻找 2020 试题 C: 跑步训练 ...
- 2020年第十一届蓝桥杯省赛及国赛心得(Java B组)
省赛 今年省赛五道结果填空题,五道程序设计题.结果填空前三道比较简单,都对了.最后两道结果填空题有点难,就直接跳过去做程序设计题.前两道送分题,第三道深搜,第四道时间来不及,我直接暴力过50%样例.最 ...
- 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑
题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...
- 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
2020年第十一届蓝桥杯-省赛-C&C++大学A组-B.既约分数 Ideas 这题就是简单的暴力枚举,把分子和分母都从1枚举到2020,然后判断分子和分母的的最大公约数是不是1就OK了. 计算 ...
最新文章
- 数据库jdbc property文件配置信息片段
- 数据仓库的未来 MariaDB ColumnStore
- 如何查看阵列卡的队列深度
- java多叉树全路径_算法实战——多叉树全路径遍历
- 单片机烧录软件编写_单片机技术系列之一:单片机概述
- (*长期更新)软考网络工程师学习笔记——Section 11 Linux操作系统简介
- android安卓应用和OBD的集成场景
- 关于axios请求报400如何获取报错信息
- packer build 报错 无任何输出 一直报“skipping line: 1 skipping line: 2 skipping line: 3.....”
- vue报错Invalid Host header
- dc游戏java_极限飞车-穿越峡谷(DC出品)
- python 爬网站 实例_python爬虫实战:之爬取京东商城实例教程!(含源代码)
- 洛谷——P1851 好朋友
- 编译原理 编译器自动生成工具
- 油猴脚本管理器使用指南
- 兴奋!北大嵩天教授Python零基础入门教程全套,可以下载啦
- 基于JAVA的教务排课系统毕业设计
- 苹果airplay是什么 苹果手机投屏到电脑
- VBScript教程-第三章. 脚本的组成部分
- 为什么4G、5G又称为蜂窝网络?跟蜂窝有什么关系?