【蓝桥杯每日一题】3.16
🏝️专栏: 【蓝桥杯备篇】
🌅主页: f狐o狸x
目录
3.9 高精度算法
一、高精度加法
题目链接:
题目描述:
解题思路:
解题代码:
二、高精度减法
题目链接:
题目描述:
解题思路:
解题代码:
三、高精度乘法
题目链接:
题目描述:
解题思路:
解题代码:
四、高精度除法
题目链接:
题目描述:
解题思路:
解题代码:
3.10 枚举
一、铺地毯
题目链接:
题目描述:
解题思路:
解题代码:
二、回文日期
题目链接:
题目描述:
解题思路:
解题代码:
三、扫雷
题目链接:
题目描述:
解题思路:
解题代码:
刷题就像打游戏,蓝桥杯是终极大BOSS,每天的真题都是小怪——虽然爆率低,但装备(知识)掉不停!
3.9 高精度算法
今天来点有意思的,模拟小学的加减乘除
一、高精度加法
题目链接:
P1601 A+B Problem(高精)
题目描述:

解题思路:
这题我们可以看到a,b这两个数的值是非常大的(已经超过了long long)因此我们需要自己写一个加法的代码,我们可以用一个数组把数字的每一位存起来,在想小学数学那样一位一位的计算就可以了

解题代码:
#include <iostream>using namespace std;const int N = 1010;int a[N], b[N], c[N];
int la, lb, lc;void add(int c[], int a[], int b[])
{for (int i = 0; i < lc; i++){c[i] += a[i] + b[i];c[i + 1] = c[i] / 10;c[i] %= 10;}if (c[lc]) lc++;
}int main()
{string x, y; cin >> x >> y;// 将数据存入数组la = x.size();lb = y.size();lc = max(la, lb);for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';add(c, a, b);// c = a + bfor (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}
二、高精度减法
题目链接:
P2142 高精度减法
题目描述:

解题思路:
这题和上面的高精度加法类似,都是不能简单的用一个long long 的变量就能搞定的,因此还是需要我们模拟一下小学时候学的减法,列竖式来一个一个算

解题代码:
#include <iostream>using namespace std;const int N = 1e5 + 10;int a[N], b[N], c[N];
int la, lb, lc;bool bigger(string x, string y)
{if (x.size() != y.size()){return y.size() > x.size();}return y > x;
}void sub(int c[], int a[], int b[])
{for (int i = 0; i < lc; i++){c[i] += a[i] - b[i];if (c[i] < 0){c[i + 1]--;c[i] += 10;}}while (1 != lc && c[lc - 1] == 0) lc--;
}int main()
{string x, y; cin >> x >> y;if (bigger(x, y)){swap(x, y);cout << '-';}la = x.size(); lb = y.size(); lc = max(la, lb);for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';sub(c, a, b); // c = a - b;for (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}
三、高精度乘法
题目链接:
P1303 A*B Problem
题目描述:

解题思路:
同上,模拟小学列竖式乘法即可

才怪,我骗你的,这里为了代码更加简洁,我们可以先处理进位,最后在处理,如下图:

解题代码:
#include <iostream>using namespace std;const int N = 2010;int a[N], b[N], c[N];
int la, lb, lc;void mul(int c[], int a[], int b[])
{for (int i = 0; i < la; i++){for (int j = 0; j < lb; j++){c[i + j] += a[i] * b[j]; // 无进位乘法}}// 处理进位for (int i = 0; i < lc; i++){c[i + 1] += c[i] / 10;c[i] %= 10;}while (lc != 1 && c[lc - 1] == 0) lc--;
}int main()
{string x, y; cin >> x >> y;la = x.size(); lb = y.size(); lc = la + lb;for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';for (int i = lb - 1; i >= 0; i--) b[lb - 1 - i] = y[i] - '0';mul(c, a, b);// c = a * b;for (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}
四、高精度除法
题目链接:
P1480 A/B Problem
题目描述:

解题思路:
模拟小学除法即可

解题代码:
#include <iostream>using namespace std;typedef long long LL;const int N = 5010;int a[N], c[N];
LL b;
int la, lc;void div(int c[], int a[], LL b)
{LL t = 0;for (int i = lc - 1; i >= 0; i--){t = t * 10 + a[i];c[i] = t / b;t = t % b;}while (lc != 1 && c[lc - 1] == 0) lc--;
}int main()
{string x; cin >> x >> b;la = x.size(); lc = la;for (int i = la - 1; i >= 0; i--) a[la - 1 - i] = x[i] - '0';div(c, a, b); // c = a / bfor (int i = lc - 1; i >= 0; i--) cout << c[i];return 0;
}
3.10 枚举
枚举,顾名思义就是意义列举,来吧来吧直接上题目
一、铺地毯
题目链接:
P1003 [NOIP 2011 提高组] 铺地毯
题目描述:

解题思路:
因为题目给的数量不大,因此我们可以暴力枚举,把所有情况全部意义罗列出来,在判断是否符合题目要求,符合直接返回即可(因为这个题是我们需要我们找到最后一个符合要求的地毯,因此我们可以之后从后往前遍历来优化代码)
解题代码:
#include <iostream>using namespace std;const int N = 1e4 + 10;int a[N], b[N], g[N], k[N];int main()
{int n; cin >> n;for (int i = 1; i <= n; i++){cin >> a[i] >> b[i] >> g[i] >> k[i];}int x, y; cin >> x >> y;int flag = 0;for (int i = n; i >= 0; i--){if (a[i] <= x && b[i] <= y &&a[i] + g[i] >= x && b[i] + k[i] >= y){cout << i << endl;flag++;break;}}if (!flag) cout << -1 << endl;return 0;
}
二、回文日期
题目链接:
P2010 [NOIP 2016 普及组] 回文日期
题目描述:

解题思路:
这里可以我们可以直接暴力枚举从date1 一直枚举到 date2,然后再一一判断该日期是否是回文日期,再用一个cnt变量计数就行了。

但是这样的算法会不会太过于浪费呢?这里有另外一个方法:将data1里的year1 枚举到year2,再判断日期是否合法即可。

但是这样依然不是最优解,方法二还需要枚举9999次,这里我们还有法三:将所有日期枚举出来,在判断回文的年份是否在题目要求的年份里面

解题代码:
这里煮波偷个懒,只写第第三种方法,前两种方法大家可以自己去试试
#include <iostream>using namespace std;typedef long long LL;int days[13] = { 0,31,29,31,30,31,30,31,31,30,31,30,31 };int main()
{int date1, date2; cin >> date1 >> date2;int cnt = 0;for (int m = 1; m < 13; m++){for (int d = 1; d <= days[m]; d++){if (date1 <= (((d % 10) * 1000 + (d / 10) * 100 + (m % 10)*10 + m / 10) * 10000 + m * 100 + d) &&date2 >= (((d % 10) * 1000 + (d / 10) * 100 + (m % 10) * 10 + m / 10) * 10000 + m * 100 + d)){cnt++;}}}cout << cnt << endl;return 0;
}
三、扫雷
题目链接:
P2327 [SCOI2005] 扫雷
题目描述:

解题思路:
这个题也是可以枚举的,我们可以根据第一排是否1有雷推出下一排有没有雷(是否有雷用0 1表示)那么下一排有没有雷就=上一排的地雷+当前排的地雷 - 当前排的数字

解题代码:
#include <iostream>using namespace std;const int N = 1e4 + 10;int n;int a[N], b[N];int cheak1()
{a[1] = 0;for (int i = 2; i <= n + 1; i++){a[i] = b[i - 1] - a[i - 1] - a[i - 2];if (a[i] > 1 || a[i] < 0)return 0;}if (a[n + 1])return 0;return 1;
}int cheak2()
{a[1] = 1;for (int i = 2; i <= n + 1; i++){a[i] = b[i - 1] - a[i - 1] - a[i - 2];if (a[i] > 1 || a[i] < 0)return 0;}if (a[n + 1])return 0;return 1;
}int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> b[i];}int ret = 0;ret += cheak1();ret += cheak2();cout << ret << endl;return 0;
}
ok,本期就到这里吧,过两天在更新下一期 拜拜~
每日三省吾身:
-
暴力能过吗?
-
贪心能贪吗?
-
要不…开摆?🤔
相关文章:
【蓝桥杯每日一题】3.16
🏝️专栏: 【蓝桥杯备篇】 🌅主页: f狐o狸x 目录 3.9 高精度算法 一、高精度加法 题目链接: 题目描述: 解题思路: 解题代码: 二、高精度减法 题目链接: 题目描述&…...
2.7 滑动窗口专题:串联所有单词的子串
LeetCode 30. 串联所有单词的子串算法对比分析 1. 题目链接 LeetCode 30. 串联所有单词的子串 2. 题目描述 给定一个字符串 s 和一个字符串数组 words,words 中所有单词长度相同。要求找到 s 中所有起始索引,使得从该位置开始的连续子串包含 words 中所…...
电脑实用小工具--VMware常用功能简介
一、创建、编辑虚拟机 1.1 创建新的虚拟机 详见文章新创建虚拟机流程 1.2 编辑虚拟机 创建完成后,点击编辑虚拟机设置,可对虚拟机内存、处理器、硬盘等各再次进行编辑设置。 二、虚拟机开关机 2.1 打开虚拟机 虚拟机创建成功后,点击…...
为训练大模型而努力-分享2W多张卡通头像的图片
最近我一直在研究AI大模型相关的内容,想着从现在开始慢慢收集各种各样的图片,万一以后需要训练大模型的时候可以用到,或者自己以后也许会需要。于是决定慢慢收集这些图片,为未来的学习和训练大模型做一些铺垫,哈哈。 …...
从零开始学习机器人---如何高效学习机械原理
如何高效学习机械原理 1. 理解课程的核心概念2. 结合图形和模型学习3. 掌握公式和计算方法4. 理论与实践相结合5. 总结和复习6. 保持好奇心和探索精神 总结 机械原理是一门理论性和实践性都很强的课程,涉及到机械系统的运动、动力传递、机构设计等内容。快速学习机械…...
JVM 垃圾回收器的选择
一:jvm性能指标吞吐量以及用户停顿时间解释。 二:垃圾回收器的选择。 三:垃圾回收器在jvm中的配置。 四:jvm中常用的gc算法。 一:jvm性能指标吞吐量以及用户停顿时间解释。 在 JVM 调优和垃圾回收器选择中࿰…...
使用GPTQ量化Llama-3-8B大模型
使用GPTQ量化8B生成式语言模型 服务器配置:4*3090 描述:使用四张3090,分别进行单卡量化,多卡量化。并使用SGLang部署量化后的模型,使用GPTQ量化 原来的模型精度为FP16,量化为4bit 首先下载gptqmodel量化…...
2025-03-16 学习记录--C/C++-PTA 习题4-2 求幂级数展开的部分和
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 习题4-2 求幂级数展开的部分和 已知函数e^x可以展开为幂级数1xx^2/2!x^3/3!⋯x^k/k!⋯。现给定一个实数x&a…...
【C#】Http请求设置接收不安全的证书
在进行HTTP请求时,出现以下报错,可设置接收不安全证书跳过证书验证,建议仅测试环境设置,生产环境可能会造成系统漏洞 /// <summary> /// HttpGet请求方法 /// </summary> /// <param name"requestUrl"&…...
从PDF文件中提取数据
笔记 import pdfplumber # 打开PDF文件 with pdfplumber.open(数学公式.pdf) as pdf:for i in pdf.pages: # 遍历页print(i.extract_text()) # extract_text()方法提取内容print(f---------第{i.page_number}页结束---------)...
【k8s001】K8s架构浅析
Kubernetes 架构浅析 #mermaid-svg-irCZnQUuietSX3Ro {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-irCZnQUuietSX3Ro .error-icon{fill:#552222;}#mermaid-svg-irCZnQUuietSX3Ro .error-text{fill:#552222;stroke…...
NPU、边缘计算与算力都是什么啊?
考虑到灵活性和经济性,公司购置一台边缘计算机,正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念,并试图将其做个概要的说明。 一、算力:数字世界的“基础能源” 1.1 算力是什么 **算力(…...
AP AR
混淆矩阵 真实值正例真实值负例预测值正例TPFP预测值负例FNTN (根据阈值预测) P精确度计算:TP/(TPFP) R召回率计算:TP/(TPFN) AP 综合考虑P R 根据不同的阈值计算出不同的PR组合, 画出PR曲线,计算曲线…...
Leetcode-1278.Palindrome Partitioning III [C++][Java]
目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-1278.Palindrome Partitioning IIIhttps://leetcode.com/problems/palindrome-partitioning-iii/description/1278. 分割回文串 III - 力扣(LeetCode)1278. 分割回文串 III - 给你一个由小写…...
Java集合 - ArrayList
ArrayList 是 Java 集合框架中最常用的动态数组实现类,位于 java.util 包中。它基于数组实现,支持动态扩容和随机访问。 1. 特点 动态数组:ArrayList 的底层是一个数组,可以根据需要动态扩展容量。 有序:元素按照插入…...
C++特性——智能指针
为什么需要智能指针 对于定义的局部变量,当作用域结束之后,就会自动回收,这没有什么问题。 当时用new delete的时候,就是动态分配对象的时候,如果new了一个变量,但却没有delete,这会造成内存泄…...
ctf web入门知识合集
文章目录 01做题思路02信息泄露及利用robots.txt.git文件泄露dirsearch ctfshow做题记录信息搜集web1web2web3web4web5web6web7web8SVN泄露与 Git泄露的区别web9web10 php的基础概念php的基础语法1. PHP 基本语法结构2. PHP 变量3.输出数据4.数组5.超全局变量6.文件操作 php的命…...
DeepSeek:技术教育领域的AI变革者——从理论到实践的全面解析
一、技术教育为何需要DeepSeek? 在数字化转型的浪潮下,技术教育面临着知识更新快、实践门槛高、个性化需求强三大核心挑战。传统的教学模式难以满足开发者快速掌握前沿技术、构建复杂系统能力的需求。DeepSeek作为国产开源大模型的代表,凭借…...
MySQL-存储过程和自定义函数
存储过程 存储过程,一组预编译的 SQL 语句和流程控制语句,被命名并存储在数据库中。存储过程可以用来封装复杂的数据库操作逻辑,并在需要时进行调用。 使用存储过程 创建存储过程 create procedure 存储过程名() begin存储过程的逻辑代码&…...
图——表示与遍历
图的两种主要表示方法 图有两种常用的表示方法,一种是邻接表法(adjacency-list),另一种是邻接矩阵法(adjacency-matrix)。 邻接表法储存数据更紧凑,适合稀疏的图(sparse graphs&am…...
新手村:数据预处理-异常值检测方法
机器学习中异常值检测方法 一、前置条件 知识领域要求编程基础Python基础(变量、循环、函数)、Jupyter Notebook或PyCharm使用。统计学基础理解均值、中位数、标准差、四分位数、正态分布、Z-score等概念。机器学习基础熟悉监督/无监督学习、分类、聚类…...
电磁兼容性|电子设备(EMC)测试与系统化整改
在现代电子工程领域,5G通信、物联网与人工智能技术深度融合,电磁兼容性(EMC)已成为衡量设备可靠性的关键指标。据国际电磁兼容协会(IEEE EMC Society)2024年度报告显示,全球因EMC问题导致的电子…...
联合体定义与应用
引言 讲到了结构体,那同时类似的结构就还有联合体,本文就将详解介绍联合体。 在C语言中,联合体(union)是一种特殊的数据结构,它与结构体(struct)相似,但有一个显著的不同:联合体的所有成员共用同一块内存空间。这意味着在任何时候,联合体中只能有一个成员保存有效数…...
ChatGPT-4
第一章:ChatGPT-4的技术背景与核心架构 1.1 生成式AI的发展脉络 生成式人工智能(Generative AI)的演进历程可追溯至20世纪50年代的早期自然语言处理研究。从基于规则的ELIZA系统到统计语言模型,再到深度学习的革命性突破&#x…...
C语言_数据结构总结9:树的基础知识介绍
1. 树的基本术语 - 祖先:考虑结点K,从根A到结点K的唯一路径上的所有其它结点,称为结点K的祖先。 - 子孙:结点B是结点K的祖先,结点K是B的子孙。结点B的子孙包括:E,F,K,L。 - 双亲:路径上…...
基于ydoVr算法的车辆智能防盗系统的设计与实现
标题:基于ydoVr算法的车辆智能防盗系统的设计与实现 内容:1.摘要 随着汽车保有量的不断增加,车辆被盗问题日益严重,给车主带来了巨大的经济损失。为解决这一问题,本文旨在设计并实现基于ydoVr算法的车辆智能防盗系统。该系统综合运用传感器技…...
Python学习第十八天
Django模型 定义:模型是 Django 中用于定义数据库结构的 Python 类。每个模型类对应数据库中的一张表,类的属性对应表的字段。 作用:通过模型,Django 可以将 Python 代码与数据库表结构关联起来,开发者无需直接编写 S…...
蓝桥杯备考:图论之Prim算法
嗯。通过我们前面的学习,我们知道了,一个具有n个顶点的连通图,它的生成树包括n-1个边,如果边多一条就会变成图,少一条就不连通了 接下来我们来学一下把图变成生成树的一个算法 Prim算法,我们从任意一个结…...
min_element用法
查找字典中的最小value值 auto max_it std::min_element(my_map.begin(), my_map.end(),[](const auto& a, const auto& b) {return a.second < b.second; // 查找最小值});其中,这是一个查找最小值的自定义函数 [](const auto& a, const auto&am…...
列表动态列处理
1、在initialize()方法里,获取列表控件,添加CreateListColumnsListener监听 public void initialize(){ BillList billlist(BillList)this.getControl("billlistap"); billlist.addCreateListColumnsListener(this::beforeCreateListColumns)…...
