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++ 白话代码相关推荐

  1. 2020年第十一届蓝桥杯C/C++ B组第二场省赛真题

    2020年第十一届蓝桥杯C/C++ B组第二场省赛真题 第一题 门牌制作 题目描述 小蓝要为一条街的住户制作门牌号.这条街一共有2020位住户,门牌号从1到2020编号.小蓝制作门牌的方法是先制作0到 ...

  2. 2020第十一届蓝桥杯省赛C组第一场

    2020第十一届蓝桥杯省赛C组第一场 试题 A: 指数计算 问题描述 题解 试题 B: 解密 问题描述 题解 试题 C: 跑步训练 问题描述 题解 试题 D: 合并检测 问题描述 题解 试题 E: R ...

  3. 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数

    2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...

  4. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数

    这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...

  5. 2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数

    2020年第十一届蓝桥杯 - 国赛 - Java研究生组 - F.循环小数 在线评测 Ideas 对于一个纯循环小数,假设循环节为l,则小数为0.llll-,转换为分数就是 l / (10 ** n ...

  6. 2020年软件类第十一届蓝桥杯 省赛 python组(人生苦短,我用python)

    2020年软件类第十一届蓝桥杯 省赛 python组 题解 文章目录 2020年软件类第十一届蓝桥杯 省赛 python组 题解 试题 A: 门牌制作 试题 B: 寻找 2020 试题 C: 跑步训练 ...

  7. 2020年第十一届蓝桥杯省赛及国赛心得(Java B组)

    省赛 今年省赛五道结果填空题,五道程序设计题.结果填空前三道比较简单,都对了.最后两道结果填空题有点难,就直接跳过去做程序设计题.前两道送分题,第三道深搜,第四道时间来不及,我直接暴力过50%样例.最 ...

  8. 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑

    题目链接 Ideas 2020年第十一届蓝桥杯 - 国赛 - Python大学组 - H.答疑 Code Python if __name__ == '__main__':n = int(input( ...

  9. 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数

    2020年第十一届蓝桥杯-省赛-C&C++大学A组-B.既约分数 Ideas 这题就是简单的暴力枚举,把分子和分母都从1枚举到2020,然后判断分子和分母的的最大公约数是不是1就OK了. 计算 ...

最新文章

  1. 数据库jdbc property文件配置信息片段
  2. 数据仓库的未来 MariaDB ColumnStore
  3. 如何查看阵列卡的队列深度
  4. java多叉树全路径_算法实战——多叉树全路径遍历
  5. 单片机烧录软件编写_单片机技术系列之一:单片机概述
  6. (*长期更新)软考网络工程师学习笔记——Section 11 Linux操作系统简介
  7. android安卓应用和OBD的集成场景
  8. 关于axios请求报400如何获取报错信息
  9. packer build 报错 无任何输出 一直报“skipping line: 1 skipping line: 2 skipping line: 3.....”
  10. vue报错Invalid Host header
  11. dc游戏java_极限飞车-穿越峡谷(DC出品)
  12. python 爬网站 实例_python爬虫实战:之爬取京东商城实例教程!(含源代码)
  13. 洛谷——P1851 好朋友
  14. 编译原理 编译器自动生成工具
  15. 油猴脚本管理器使用指南
  16. 兴奋!北大嵩天教授Python零基础入门教程全套,可以下载啦
  17. 基于JAVA的教务排课系统毕业设计
  18. 苹果airplay是什么 苹果手机投屏到电脑
  19. VBScript教程-第三章. 脚本的组成部分
  20. 为什么4G、5G又称为蜂窝网络?跟蜂窝有什么关系?

热门文章

  1. Linux小小白入门教程(七):vi文本编辑命令
  2. Java写家庭记账软件
  3. 【濡白的C语言】初学者-从零开始-5(模块化设计——函数,传值和传址)
  4. mysql sql语句面试经典50题_SQL:经典面试50题
  5. RocketMQ—(总结)一篇就搞懂 RocketMQ
  6. 2023最新Z-Blog仿小刀资源网主题模板CMS源码+UI大气美观
  7. 广州多玩YY(欢聚时代)2013校园招聘开发类C++笔试题
  8. java 是脚本语言_java中使用脚本语言
  9. 针对商业模式的七伤拳
  10. SELECT 语句基本用法介绍