试题A :门牌制作

// 624
#include <iostream>
using namespace std;int solve(int x)
{int res = 0;while (x){if (x % 10 == 2) res ++ ;x /= 10;}return res;
}int main()
{int res = 0;for (int i = 1; i <= 2020; i ++ ){res += solve(i);}cout << res;
}

试题B :既约分数

// 2481215
#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 fenzi = 1; fenzi <= 2020; fenzi ++ )for (int fenmu = 1; fenmu <= 2020; fenmu ++ ){if (gcd(fenzi, fenmu) == 1)res ++ ;}cout << res;
}

试题C :蛇形填数

// 761
#include <iostream>
using namespace std;int cnt = 1;
int g[100][100];int main()
{int x = 1, y = 1;while (cnt <= 3000){// 1g[x][y] = cnt ++ ;// 2y ++ ;for ( ; y >= 1; x ++ , y -- )g[x][y] = cnt ++ ;x -- , y ++ ;// 3x ++ ;for ( ; x >= 2; x -- , y ++ )g[x][y] = cnt ++ ;}cout << g[20][20];
}

试题D :跑步锻炼

// 8879
#include <iostream>
using namespace std;int months[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int get_day(int year, int month)
{if (month != 2) return months[month];if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) return 29;return 28;
}int main()
{int sum = 0, res = 0;for (int i = 2000; i <= 2019; i ++ ){for (int j = 1; j <= 12; j ++ ){for (int k = 1; k <= get_day(i, j); k ++ ){int weekend = (sum % 7 + 5) % 7;if (k == 1 || weekend == 0) res += 2;else res ++ ;sum ++ ;}}}for (int i = 1; i <= 9; i ++ ){for (int j = 1; j <= get_day(2020, i); j ++ ){int weekend = (sum % 7 + 5) % 7;if (j == 1 || weekend == 0) res += 2;else res ++ ;sum ++ ;}}res += 2;cout << res;
}

试题E :七段码

  • dfs+并查集
// 80
#include <iostream>
using namespace std;int res;
int e[10][10];
bool vis[10];
int p[10];int find(int x)
{if (p[x] != x) p[x] = find(p[x]);return p[x];
}bool check()
{for (int i = 0; i < 10; i ++ ) p[i] = i;for (int i = 0; i < 10; i ++ )for (int j = 0; j < 10; j ++ )if (vis[i] && vis[j] && e[i][j]){int ii = find(i), jj = find(j);p[ii] = jj;}int cnt = 0;for (int i = 0; i <= 6; i ++ )if (vis[i] && p[i] == i)cnt ++ ;if (cnt != 1) return false;return true;
}void dfs(int u)
{if (u == 7){if (check()) res ++ ;return ;}vis[u] = true;dfs(u + 1);vis[u] = false;dfs(u + 1);
}int main()
{e[0][1] = e[1][0] = true;e[0][3] = e[3][0] = true;e[0][4] = e[4][0] = true;e[1][2] = e[2][1] = true;e[2][3] = e[3][2] = true;e[2][6] = e[6][2] = true;e[3][4] = e[4][3] = true;e[3][6] = e[6][3] = true;e[4][5] = e[5][4] = true;e[5][6] = e[6][5] = true;dfs(0);cout << res;
}

试题F :成绩统计

#include <iostream>
using namespace std;int main()
{int n; cin >> n;int jige = 0, youxiu = 0;for (int i = 0; i < n; i ++ ){int grade; cin >> grade;if (grade >= 60) jige ++ ;if (grade >= 85) youxiu ++ ;}cout << (int)(100.0 * jige / n + 0.5) << '%' << endl;cout << (int)(100.0 * youxiu / n + 0.5) << '%' << endl;
}

试题G :回文日期

  • 直接枚举回文数,再来判断合法性
#include <iostream>
#include <algorithm>
using namespace std;int months[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int get_day(int yy, int mm)
{if (mm != 2) return months[mm];if ((yy % 400 == 0) || (yy % 4 == 0 && yy % 100 != 0)) return 29;return 28;
}int main()
{int n; cin >> n;bool ok1 = false, ok2 = false;string ans1, ans2;for (int year = n / 10000; ; year ++ ){string a = to_string(year);string b = a;reverse(b.begin(), b.end());if (a + b <= to_string(n)) continue;int month = stoi(b.substr(0, 2));int day = stoi(b.substr(2, 2));if (month < 1 || month > 12) continue;if (day < 1 || day > get_day(year, month)) continue;if (!ok1) ans1 = a + b, ok1 = true;if (!ok2){if (year / 100 == year % 100)ans2 = a + b, ok2 = true;}if (ok1 && ok2) break;}cout << ans1 << endl << ans2;
}

试题H :子串分值和

  • 算每一个位置的贡献
  • 因为是算每个连续子串中不同字符的个数,因此 对于原字符串中所有相同的字符而言,每一个字符做出的贡献中,当前子串必然不包含上一次这个字符出现的位置及以前,包含这个字符出现的位置至原字符串末尾
#include <iostream>
using namespace std;typedef long long ll;int last[1000];int main()
{string s; cin >> s;int n = (int)s.size();s = "0" + s;ll res = 0;for (int i = 1; i <= n; i ++ ){res += (ll)(i - last[s[i] - 'a']) * (n - i + 1);last[s[i] - 'a'] = i;}cout << res;
}

试题I :平面切分

  • 每增加一条直线,它对答案的贡献是 它与之前直线的所有交点(要去重)个数+1
  • 直线本身也需要去重
  • 因此,两次用到set
  • 计算交点的时候,注意分母为0情况
  • 易错点 :涉及直线或点,经常要用到set容器来去重,且每次计算分式必然要讨论分母为零的情况
#include <iostream>
#include <set>
#include <vector>
using namespace std;typedef pair<int, int> PII;set<PII> se1;
vector<PII> linear;int main()
{int n; cin >> n;for (int i = 0, a, b; i < n && scanf("%d%d", &a, &b); i ++ )se1.insert({a, b});for (auto pii : se1)linear.push_back(pii);int res = 2;for (int i = 1; i < linear.size(); i ++ ){set<pair<long double, long double>> point;for (int j = 0; j < i; j ++ ){int a1 = linear[i].first, b1 = linear[i].second;int a2 = linear[j].first, b2 = linear[j].second;if (a1 == a2) continue;long double x = (long double)(b2 - b1) / (a1 - a2);long double y = (long double)(a1 * b2 - a2 * b1) / (a1 - a2);point.insert({x, y});}res += point.size() + 1;}printf("%d", res);
}

试题J :字串排序

第十一届蓝桥杯大赛软件赛省赛第二场 C/C++ 大学B组相关推荐

  1. 2020第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组

    2020第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 试题 A: 门牌制作(难度:★) 思路: 代码: 试题 B: 寻找 2020(难度:★★) 思路: 代码: 试题 C: 蛇形填数(难 ...

  2. 2020 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组 完整题面和题解

    文章目录 A:门牌制作 题面: 思路: 代码: 答案: B:既约分数 思路: 代码: 答案: C:蛇形填数 题面: 思路: 代码: 答案: D:跑步锻炼 题面: 思路: 代码: 答案: E:七段码 题 ...

  3. 2020第十一届蓝桥杯大赛软件类国赛 C/C++ 大学 B 组

    成绩是国二中游,赛场上填空题写了第1,2,5题,第2题大意错了,编程题写了第7,8,10题,第7题对了样例,后两题不知道可以对多少,总分有50左右吧. 试题 A: 美丽的 2 本题总分:5 分 [问题 ...

  4. 第十一届蓝桥杯大赛软件类省赛第一场真题-Java语言B组

    目录 1.解密 2.纪念日 3.合并检测 4.分配口罩 5.斐波那契数列最大公约数 6.分类计数 7.八次求和 8.字符串编号 9.BST 插入节点问题 10.网络分析 1.解密 (由 30 个大小写 ...

  5. 第十一届蓝桥杯大赛软件类省赛第二场 C/C++ 大学 B 组

    试题 A: 门牌制作 直接暴力算 624 试题 B: 既约分数 直接暴力算 2481215 试题 C: 蛇形填数 规律题,第i行依此打i个数字,矩阵打出来就能看出来了. 我记得是第x行第y个数字就是a ...

  6. 第十一届蓝桥杯大赛软件类省赛第二场真题-Java语言B组

    目录 1.门牌制作 2.寻找2020 3.蛇形填数 4.七段码 5.排序 6.成绩分析 7.单词分析 8.数字三角形 9.子串分值和 10.装饰珠 1.门牌制作 [问题描述] 小蓝要为一条街的住户制作 ...

  7. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  8. 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解

    ========================================== 2019-2021蓝桥杯C++ B组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ B组真题题解 2020第 ...

  9. 第十一届蓝桥杯大赛软件类决赛(2020javaB国赛)

    第十一届蓝桥杯大赛软件类决赛 Java 大 学 B 组 目录 第十一届蓝桥杯大赛软件类决赛 试题 A: 美丽的 2 试题 B: 扩散 试题 C: 阶乘约数 试题 D: 本质上升序列 试题 E: 玩具蛇 ...

  10. 第九届蓝桥杯大赛软件类国赛

    文章目录 第九届蓝桥杯大赛软件类国赛 国赛C++ A组 三角形面积 阅兵方阵 找假币 约瑟夫环 -- important 自描述序列 -- todo 采油 -- todo 国赛C++ B组 换零钞 激 ...

最新文章

  1. 测试工具/PostMan
  2. PMP-【第1章 引论】-2020-12-29(25页-34页)
  3. 全面容器化之后,来电科技如何实现微服务治理?
  4. matplotlib(3)
  5. ADMM参考资料(part1)
  6. php select user 验证,php 用户验证的简单示例
  7. 前端开发-热更新原理解读
  8. 测量时间:从Java到内核再到
  9. feko软件_计算电磁学各种方法和电磁仿真软件简述
  10. Swift中文教程(十二) 下标
  11. django 路径转换器
  12. ftp文件服务器坑,Java实现FTP上传文件到Linux服务器的那些坑
  13. 发现同义词 python_查找相似/同义词/上下文单词Python
  14. 【AD18】原理图生成PDF
  15. css 魔方,css 3d旋转魔方
  16. 流风ASP.NET框架企业版试用地址公布
  17. 八皇后算法python_八皇后问题遗传算法实现(python版)
  18. 新浪短网址在线生成,官方api接口获取方案
  19. 使用人人开源搭建后台管理系统
  20. JAVA的内存回收机制(快速入门版)

热门文章

  1. SAP系统怎样快速应对2019税改?
  2. SAP ABAP ALV(LVC)的一个自定义事件(F4帮助事件,回车ENTER按钮事件)的一个实例
  3. ORACLE如何删除归档日志文件
  4. 控制ALV单元格可编辑
  5. XP系统自动关机命令
  6. ALV报表中设置可修改字段
  7. SAP HANA:开启企业管理软件下一波革新浪潮?
  8. 做好新型冠状病毒防疫 |春节第一重任:说服爸妈带口罩
  9. 我月入过万,送着外卖写着诗
  10. linux查看目录文件系统,ubuntu linux 文件系统目录结构-Windows下查看电脑信息的命令-linux菜鸟也必须知道的几个ubuntu最基础命令_169IT.COM...