蓝桥杯第八届c++大学B组详解
目录
1.购物单
2.等差素数列
3.承压计算
4.方格分割
5.日期问题
6.包子凑数
7.全球变暖
8.k倍区间
1.购物单

题目解析:就是将折扣字符串转化为数字,进行相加求和。
#include<iostream>
#include<string>
#include<cmath>
using namespace std;int main()
{double sum = 0.0;while(1){double price;string ignore;string discount;double dis = 0.0;cin >> price >> ignore >> discount;if(ignore == "0") break;if(discount == "半价") discount = "5折";//截取字符discount = discount.substr(0, discount.size() - 2);for(int i = 0; i < discount.size(); i++){dis += (discount[i] - '0') * pow(10, -i - 1);}sum += dis * price;}//面额刚好100整除if((int)sum % 100 == 0)cout << (int)sum << endl;else{cout << (int)sum / 100 * 100 + 100 << endl;}return 0;
}
这题目数据太长了,输入很麻烦。那么就不讲武德。因为上面代码没错但是运行超级麻烦。这种简单题目直接不讲武德。
#include <iostream>
using namespace std;
int main()
{// 请在此输入您的代码double sum = 180.90*0.88+10.25*0.65+56.14*0.9+104.65*0.9+100.30*0.88+297.15*0.5+26.75*0.65+130.62*0.5+240.28*0.58+270.62*0.8+115.87*0.88+247.34*0.95+73.21*0.9+101.00*0.5+79.54*0.5+278.44*0.7+199.26*0.5+12.97*0.9+166.30*0.78+125.50*0.58+84.98*0.9+113.35*0.68+166.57*0.5+42.56*0.9+81.90*0.95+131.78*0.8+255.89*0.78+109.17*0.9+146.69*0.68+139.33*0.65+141.16*0.78+154.74*0.8+59.42*0.8+85.44*0.68+293.70*0.88+261.79*0.65+11.30*0.88+268.27*0.58+128.29*0.88+251.03*0.8+208.39*0.75+128.88*0.75+62.06*0.9+225.87*0.75+12.89*0.75+34.28*0.75+62.16*0.58+129.12*0.5+218.37*0.5+289.69*0.8;if((int)sum % 100 == 0)cout << (int)sum;else{int a = (int)(sum+100)/100*100;cout << a << endl;}return 0;
}
2.等差素数列

首先将素数全部放到数组当中,然后再用set进行查看是否是素数,f函数用首先确定首项,在确定公差,最后判断是否每项是否是素数,看在set中可不可以找到。
#include <iostream>
#include<vector>
#include<set>
using namespace std;vector<int> a(5000);
set<int> g;bool isprime(int x)
{for(int i = 2; i < x / 2; i++){if(x % i == 0)return false;}return true;
}int f(vector<int> a, int n)
{for(int i = 0; i < n; i++)//算首项{int first = a[i];for(int d = 1; d < a[n-1] - first; d++){int m = first;for(int j = 1; j < 10; j++){m += d;//求和不是素数if(g.find(m) == g.end())break;if(j == 9)return d;}}}
}int main()
{a[0] = 2, a[1] = 3;g.insert(2);g.insert(3);int index = 2;int t = 5;while(index < 5000){//将2-5000的素数都放到set;if(isprime(t)){a[index++] = t;g.insert(t); }t++;}//f返回最小公差;cout << f(a, 5000) << endl;return 0;
}
3.承压计算

题目解析:这个题目看懂题目意思就已经够烦了,就是将上面的数平均分给下面的数,因为最小重量是2086458231,这个垃圾数字处理。
#include <iostream>
#include<algorithm>
using namespace std;long long a[30][30];int main()
{long long factor = 1;//2的30次方。是为了避免小数。for(int i = 0; i < 30; i++){factor = factor * 2;}for(int i = 0; i < 29; i++){for(int j = 0; j <= i; j++){long long m = 0;cin >> m;a[i][j] = m * factor;} }for(int i = 0; i < 29; i++){for(int j = 0; j <= i; j++){long long half = a[i][j] / 2;a[i + 1][j] += half;a[i + 1][j + 1] += half;}}//最后一行排序sort(a[29], a[29] + 30);cout << a[29][29] / 2 << endl;return 0;
}
4.方格分割

题目解析:本质是递归回溯深搜算法,找规律,是不是方格都是中心对称的,那么递归起点就在中心点,进行上下左右的排查,最后还要回溯,还有因为题目要求是中心对称也是一种方法,所以方法数最后要除以4.
#include <iostream>
using namespace std;//上下左右方位
int d[][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
int vis[7][7];
int ret = 0;void dfs(int x, int y)
{//递归出口if(x == 0 || x == 6 || y == 0 || y == 6){ret++;return;}vis[x][y] = 1;vis[6 - x][6 - y] = 1;//上下左右for(int i = 0; i < 4; i++){int nx = x + d[i][0];int ny = y + d[i][1];//边界处理if(nx > 6 || nx < 0 || ny > 6 || ny < 0)continue;if(!vis[nx][ny]){dfs(nx, ny);}}//回溯vis[x][y] = 0;vis[6 - x][6 - y] = 0;
}int main()
{dfs(3, 3);//因为旋转对称是同一种分隔方式cout << ret / 4 << endl;return 0;
}
5.日期问题

题目解析: 细节很多,逻辑很缜密,自己代码走读一下,就可以找到细节。
#include <iostream>
#include <string>
#include<sstream>
#include<set>
using namespace std;bool isleap(int a)
{if((a % 4 == 0 || a % 100 != 0) && a % 400 == 0)return true;elsereturn false;
}void is(int n, string& s)
{stringstream ss;ss << n;ss >> s;
}string f(int year, int month, int day)
{if(year >= 0 && year <= 59) year += 2000;if(year >= 60 && year <= 99) year += 1900;if(month < 1 || month > 13) return " ";if(day < 1 || day > 31) return " ";//计算闰年bool _isleap = isleap(year);switch(month){//考虑闰月case 2:if(_isleap && day > 29) return " ";if(!_isleap && day > 28) return " ";break;case 4:if(day > 30) return " ";break;case 6:if(day > 30) return " ";break;case 9:if(day > 30) return " ";break;case 11:if(day > 30) return " ";break;default:break;}//将数字变会字符串string _a, _b, _c;is(year, _a);is(month, _b);is(day, _c);//处理前导0;if(_b.size() == 1) _b = '0' + _b;if(_c.size() == 1) _c = '0' + _c;return _a + "-" + _b + "-" + _c;
}int main()
{string in;cin >> in;//将字符串转化为数字;int a, b, c;a = (in[0] - '0') * 10 + (in[1] - '0') ;b = (in[3] - '0') * 10 + (in[4] - '0') ;c = (in[6] - '0') * 10 + (in[7] - '0') ;//年月日string case1 = f(a, b, c);//月日年string case2 = f(b, c, a);//日月年string case3 = f(c, b, a);set<string> ans;if(case1 != " ") ans.insert(case1);if(case2 != " ") ans.insert(case2);if(case3 != " ") ans.insert(case3);for(set<string>::iterator it = ans.begin(); it != ans.end(); it++){cout << *it << endl;}return 0;
}
6.包子凑数

题目解析:就是找钱的变形,使用动态规划。
#include <iostream>
using namespace std;//dp[i]表示凑不到i种蒸笼凑不齐的方案数
int main()
{int n;cin >> n;int dp[20000] = {0};int a[101];for(int i = 0; i < n; i++){cin >> a[i];}dp[0] = 1;for(int i = 0; i < n; i++){for(int j = 0; j < 10001; j++)//10001是最大凑包子数目;{if(dp[j]){dp[j + a[i]] = 1; //dp[4] = 1; dp[5] = 1}}}int flag = 0, num = 0;for(int i = a[n-1]; i < 10001; i++){if(dp[i] == 1)num++;if(dp[i] == 0)num = 0;if(num == a[0]){flag = 1;break;}}if(flag == 0)cout << "INF" << endl;else{num = 0;for(int i = 0; i < 10001; i++){if(dp[i] == 0)num++;}cout << num << endl;}return 0;
}
7.全球变暖

题目解析:递归深搜fullfill问题,
#include <iostream>
using namespace std;#define N 1000
int ret = 0;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
char IslandSea[N][N];void dfs(char IslandSea[N][N], int x, int y)
{for(int k = 0; k < 4; k++){int xx = dx[k] + x;int yy = dy[k] + y;if(xx >= 0 && xx < 7 && yy >= 0 && yy < 7){if(IslandSea[xx][yy] == '.')return; }}ret++;
}int main()
{int n;cin >> n;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cin >> IslandSea[i][j];}}for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){if(IslandSea[i][j] == '#'){dfs(IslandSea, i, j);}}}cout << ret << endl;return 0;
}
8.k倍区间

题目解析:读清楚题目,本质就是前缀和。cnt用来记录余数个数,将任意两个相同的余数进行组合一定会得到一种区间。
#include <iostream>
using namespace std;
#include<map>map<int, int> cnt;//存放余数
int a[100000];
int dp[100000];//前缀和int main()
{int n, k;long long count = 0;cin >> n >> k;dp[0] = 0;cnt[0] = 1;for(int i = 1; i <= n; i++){cin >> a[i];dp[i] = (dp[i - 1] + a[i] ) % k;//k的倍数cnt[dp[i]]++;//记录一下。cnt[0]为刚好被k整除的个数。}for(int i = 0; i < k; i++){count += (long long) cnt[i] * (cnt[i] - 1) / 2;}cout << count << endl;return 0;
}
相关文章:
蓝桥杯第八届c++大学B组详解
目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析:就是将折扣字符串转化为数字,进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…...
小于n的最大数 Leetcode 902 Numbers At Most N Given Digit Set
这两个问题的本质就是一个棵树,然后根据n对树做剪枝。难点在于剪的时候边界条件有些坑,get_lower_largest_digit_dic是这两个题目的共同点 题目一: 小于n的最大数 算法题目:小于n的最大数 问题描述:给一个数组nums[5…...
Leetcode刷题-数组(二分法、双指针法、窗口滑动)
数组 1、二分法 704. 二分查找 - 力扣(LeetCode) 需要注意区间的问题。首先在最外面的循环判断条件是left<right。那就说明我们区间规定的范围就是【left,right】 属于是左闭右闭!!!!!&…...
STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (b)
继续上篇博文:STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)-CSDN博客 往下写, 为什么:当GPIO_InitStructure.GPIO_PinGPIO_Pin_0 ; 时,其实就是将对应的该引脚的寄存器地…...
数据仓库——事实表
数据仓库基础笔记思维导图已经整理完毕,完整连接为: 数据仓库基础知识笔记思维导图 事实表 事务事实表 事务事实表用于跟踪事件,通过存储事实和与之关联的维度细节,允许单独或聚集地研究行为。粒度稀疏性包含可加事实 无事实的…...
人工智能常用的编程语言有哪些?
人工智能常用的编程语言包括Python、Java、C、R、Lisp和Prolog等。具体选择取决于项目需求、技术背景和性能要求。 Python是AI领域的明星语言,由于其简洁易懂的语法、丰富的库支持以及庞大的社区资源,适用于机器学习、深度学习和自然语言处理等领域。 …...
【Leetcode每日一题】模拟 - 提莫攻击(难度⭐)(45)
1. 题目解析 题目链接:495. 提莫攻击 2.算法原理 一、分情况讨论 要计算中毒的总时长,我们需要考虑时间点之间的差值,并根据这些差值来确定中毒的实际持续时间。 情况一:差值大于等于中毒时间 假设你的角色在时间点A中毒&#…...
OPPO云VPC网络实践
1 OPPO 云网络现状 随着OPPO业务的快速发展,OPPO云规模增长迅速。大规模虚拟实例的弹性伸缩、低延时需求对网络提出了诸多挑战。原有基于VLAN搭建的私有网络无法解决这些问题,给网络运维和业务的快速上线带来了挑战。 梳理存在的主要问题如下…...
力扣(数组)找到所有数组中消失的数字
给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。 示例 1: 输入:nums [4,3,2,7,8,2,3,1] 输出:[5,6]示例 2&am…...
每日面经分享(Spring Boot: part3 Service层)
SpringBoot Service层的作用 a. 封装业务逻辑:Service层负责封装应用程序的业务逻辑。Service层是控制器(Controller)和数据访问对象(DAO)之间的中间层,负责处理业务规则和业务流程。通过将业务逻辑封装在S…...
k8s的pod访问service的方式
背景 在k8s中容器访问某个service服务时有两种方式,一种是把每个要访问的service的ip注入到客户端pod的环境变量中,另一种是客户端pod先通过DNS服务器查找对应service的ip地址,然后在通过这个service ip地址访问对应的service服务 pod客户端…...
shell脚本发布docker-nginx vue2 项目示例
docker、git、node.js安装略过。 使git pull或者git push不需要输入密码操作方法 nginx安装在docker容器里面,参见:https://blog.csdn.net/HSJ0170/article/details/128631155 姊妹篇(宿主机nginx,非docker-nginx)&am…...
【THM】Nmap Basic Port Scans(基本端口扫描)-初级渗透测试
介绍 本房间是Nmap系列的第二个房间(网络安全简介模块的一部分)。 1.Nmap实时主机发现 2.Nmap基本端口扫描 3.Nmap高级端口扫描 4.Nmap后端口扫描 在之前的房间里,我们专注于发现在线系统。到目前为止,我们已经介绍了Nmap扫描的三个步骤: 枚举目标发现活动主机反向-…...
Groovy结合Java在生产中的落地实战
Groovy简介 Groovy是用于Java虚拟机的一种敏捷的动态语言,是一种成熟的面向对象编程语言,又是一种纯粹的脚本语言。Groovy运行在JVM环境上,在语法上兼具java 语言和脚本语言特点,大大简化了语法。同时又具有闭包和动态语言中的其…...
达梦数据库 创建外部表 [-7082]:外部表数据错误.
1:定义 外部表,是指不存在于数据库中的表。通过向达梦提供描述外部表的元数据,可以把一 个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来 进行访问。 外部表的数据存储在操作系统中࿰…...
XUbuntu22.04之激活Linux最新Typora版本(二百二十五)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…...
JavaScript简介
目录 概要: 说明: 学习JS的原因: JS可以干什么: 了解JavaScript: 前言: JavaScript的历史: JavaScript与ECMAScript: 如何运行JavaScript以及JavaScrip的特点: …...
使用PaddleX实现的智慧农业病虫检测项目
目录 1. 数据集解压 2.检查数据集的图片是否均可读取 3. 查看数据集的类别信息...
算法学习——LeetCode力扣图论篇1(797. 所有可能的路径、200. 岛屿数量、695. 岛屿的最大面积)
算法学习——LeetCode力扣图论篇1 797. 所有可能的路径 797. 所有可能的路径 - 力扣(LeetCode) 描述 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特…...
【IP组播】PIM-SM的RP、RPF校验
目录 一:PIM-SM的RP 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-SM和静态RP 4.配置动态RP 5.配置Anycast RP 二: RPF校验 原理概述 实验目的 实验内容 实验拓扑 1.基本配置 2.配置IGP 3.配置PIM-DM 4.RPF校…...
深圳龙岗企业周花哪个好
深圳龙岗企业周花哪个好?深圳皇家文化传媒有限公司值得关注在深圳龙岗,企业对于周花的需求日益增长,优质的企业周花不仅能够美化办公环境,还能提升企业形象。那么,深圳龙岗企业周花哪个好呢?深圳皇家文化传…...
OpenClaw技能市场巡礼:GLM-4.7-Flash支持的10个实用自动化模块
OpenClaw技能市场巡礼:GLM-4.7-Flash支持的10个实用自动化模块 1. 为什么需要关注OpenClaw技能市场? 去年冬天,我花了整整两周时间手动整理公司邮箱里堆积如山的会议记录和客户邮件。每天重复着"下载附件-重命名-分类存储"的机械…...
Next.js + Drizzle ORM 全流程终极指南
📖 目录 🏗️ 全局架构逻辑图 (新增)前置准备:依赖安装核心配置:drizzle.config.ts (必填项检查)环境与安全:.env 与 .gitignoreTypeScript 增强:tsconfig.json 路径别名定义模型:db/schema.ts…...
俄罗斯莫斯科电子烟展:跟团公司高性价比选择策略拆解
对于想开拓俄罗斯市场的电子烟企业来说,俄罗斯莫斯科电子烟展是不可错过的出海窗口,但行业信息杂乱、代理鱼龙混杂的现状,让很多企业陷入“选便宜还是选靠谱”的两难。选对跟团公司,不仅能节省成本,更能直接决定参展效…...
颠覆式音频编辑:Audacity AI插件的OpenVINO技术应用指南
颠覆式音频编辑:Audacity AI插件的OpenVINO技术应用指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 一、价值定位:重新定义音频处理效率边界 在数字内容创作领域,音频后期…...
USB协议分析不求人:用Wireshark解码设备描述符请求的完整指南
USB协议深度解析:用Wireshark拆解设备描述符请求的实战手册 当你第一次将USB设备插入电脑时,主机与设备之间那场无声的对话就已经开始了。作为开发者,你是否曾好奇过这个看似简单的插拔动作背后,究竟隐藏着怎样的数据交换秘密&…...
Android密钥认证踩坑实录:GtsGoogleAttestationHostTestCases模块fail排查指南
Android密钥认证深度排错指南:从GtsGoogleAttestationHostTestCases失败到系统级修复 当你深夜盯着CI系统里那片刺眼的红色——GtsGoogleAttestationHostTestCases模块测试失败时,作为Android系统工程师的你是否感到一阵窒息?这不仅仅是又一个…...
OpenClaw对接GLM-4.7-Flash:模型性能优化指南
OpenClaw对接GLM-4.7-Flash:模型性能优化指南 1. 为什么需要专门优化GLM-4.7-Flash的对接? 上个月我在本地部署了OpenClawGLM-4.7-Flash组合,原本期待它能流畅处理我的自动化办公需求,结果遭遇了典型的"水土不服"症状…...
ACE-Guard资源限制器完整教程:彻底解决腾讯游戏卡顿问题
ACE-Guard资源限制器完整教程:彻底解决腾讯游戏卡顿问题 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源,支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是否在玩《地下城与勇士》、《英雄…...
SolidWorks 异形孔向导 - 孔
(命令属性)类型【值】暗销孔【经验】一般销钉孔大小都是整数。【示例】例如,选择 φ6.0一般为了销钉好装配,销钉孔都给倒角;勾选 “近端锥孔”;值给 8.0,90,结合孔径 6.0,…...
