当前位置: 首页 > news >正文

蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)

本题链接:蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网

题目:​​​​​​​

样例:

输入
2 3.14
输出
13

思路:

        根据题意,结合数据范围,这是一道模板的高精度乘以低精度问题。

        题意是double 类型 d 与 2 的n 次幂相乘,最后四舍五入。

        我们换一下视角,看作 对于double 类型 d ,与 n 个 2 相乘,最后四舍五入。

        这样就很快解出答案了,就是对于double小数部分需要微调一下即可。

高精度乘法模板函数如下:

        

// 高精度乘以低精度 模板
inline string mul(string A,int x)
{vector<int>a;	// 取出每一位int len = A.size();	// 倒着取每一位,方便低位到高位的计算for(int i = len - 1;~i;--i) a.emplace_back(A[i] - '0');vector<int>tem;	// 存储计算结果int t = 0;	// 存储临时进位数for(int i = 0;i < len;++i){int num = t + a[i] * x;	// 开始每一位相乘tem.emplace_back(num % 10);	// 取计算结果个位t = num / 10;	// 计算进位}if(t) tem.emplace_back(t);	// 如果最后有高位的进位,我们进位string ans = "";	// 存储最后计算结果// 将结果转回为 string ,并返回结果int temlen = tem.size();for(int i = temlen - 1;~i;--i)	ans += char(tem[i] + '0');return ans;
}

  高精度加法模板函数如下:

// 高精度加法模板
inline string ADD(string A,string B)
{vector<int>a,b;int alen = A.size();int blen = B.size();// 倒着取每一位,方便低位到高位的计算for(int i = alen - 1;~i;--i) a.emplace_back(A[i] - '0');for(int i = blen - 1;~i;--i) b.emplace_back(B[i] - '0');vector<int>tem;	// 存储计算结果int t = 0;	// 存储临时进位数for(int i = 0;i < alen or i < blen;++i){int num = t;	// 开始每一位相加if(i < alen) num += a[i];if(i < blen) num += b[i];tem.emplace_back(num % 10);// 取计算结果个位t = num / 10;// 计算进位}if(t) tem.emplace_back(t);	// 如果最后有高位的进位,我们进位string ans = "";	// 存储最后计算结果// 将结果转回为 string ,并返回结果int temlen = tem.size();for(int i = temlen - 1;~i;--i)	ans += char(tem[i] + '0');return ans;
}

代码详解如下:

#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#include <unordered_map>
#define endl '\n'
#define int long long
#define YES puts("YES")
#define NO puts("NO")
#define umap unordered_map
#define All(x) x.begin(),x.end()
#pragma GCC optimize(3,"Ofast","inline")
#define IOS std::ios::sync_with_stdio(false),cin.tie(0), cout.tie(0)
using namespace std;
const int N = 2e6 + 10;
inline void solve();signed main()
{
//	freopen("a.txt", "r", stdin);
//	IOS;int _t = 1;
//	cin >> _t;while (_t--){solve();}return 0;
}// 高精度乘以低精度 模板
inline string mul(string A,int x)
{vector<int>a;	// 取出每一位int len = A.size();	// 倒着取每一位,方便低位到高位的计算for(int i = len - 1;~i;--i) a.emplace_back(A[i] - '0');vector<int>tem;	// 存储计算结果int t = 0;	// 存储临时进位数for(int i = 0;i < len;++i){int num = t + a[i] * x;	// 开始每一位相乘tem.emplace_back(num % 10);	// 取计算结果个位t = num / 10;	// 计算进位}if(t) tem.emplace_back(t);	// 如果最后有高位的进位,我们进位string ans = "";	// 存储最后计算结果// 将结果转回为 string ,并返回结果int temlen = tem.size();for(int i = temlen - 1;~i;--i)	ans += char(tem[i] + '0');return ans;
}// 高精度加法模板
inline string ADD(string A,string B)
{vector<int>a,b;int alen = A.size();int blen = B.size();// 倒着取每一位,方便低位到高位的计算for(int i = alen - 1;~i;--i) a.emplace_back(A[i] - '0');for(int i = blen - 1;~i;--i) b.emplace_back(B[i] - '0');vector<int>tem;	// 存储计算结果int t = 0;	// 存储临时进位数for(int i = 0;i < alen or i < blen;++i){int num = t;	// 开始每一位相加if(i < alen) num += a[i];if(i < blen) num += b[i];tem.emplace_back(num % 10);// 取计算结果个位t = num / 10;// 计算进位}if(t) tem.emplace_back(t);	// 如果最后有高位的进位,我们进位string ans = "";	// 存储最后计算结果// 将结果转回为 string ,并返回结果int temlen = tem.size();for(int i = temlen - 1;~i;--i)	ans += char(tem[i] + '0');return ans;
}inline void solve()
{int n;string d;bool vis = false;	// 检查是否符合四舍五入cin >> n >> d;// 如果 d 是整数的情况if(d.find(".") == -1){while(n--){d = mul(d,2);}}else{int pos = d.find(".");	// 找到 小数点 . 的位置下标int len = d.size() - pos - 1;	// 计算小数部分长度d.erase(d.begin() + pos);	// 删掉 小数点 .// 将 d 所有的数字当作整数相乘计算while(n--){d = mul(d,2);}pos = d.size() - len;	// 更新小数点位置// 查看小数点后一位是否符合四舍五入if((d[pos] - '0') >= 5) vis = true;// 删掉小数部分,保留整数while(len--) d.erase(d.begin() + d.size() - 1);if(vis) d = ADD(d,"1");	// 如果符合四舍五入,那么进一}cout << d << endl;	
}

最后提交:

相关文章:

蓝桥杯2024年第十五届省赛真题-R 格式(高精度乘法 + 加法)

本题链接&#xff1a;蓝桥杯2024年第十五届省赛真题-R 格式 - C语言网 题目&#xff1a;​​​​​​​ 样例&#xff1a; 输入 2 3.14 输出 13 思路&#xff1a; 根据题意&#xff0c;结合数据范围&#xff0c;这是一道模板的高精度乘以低精度问题。 题意是double 类型 d 与…...

普通人做抖音小店真的能赚钱吗?可以,但更取决于个人

大家好&#xff0c;我是电商花花。 现在做抖音小店的基本上都是一些新商家&#xff0c;对于我们众多零基础的朋友来说&#xff0c;是期待也是一份挑战。 抖音小店作为一个充满机会的新兴平台&#xff0c;许多人都欣喜的投入其中&#xff0c;期望能够借此来改变自己的命运&…...

基于单链表实现通讯管理系统!(有完整源码!)

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;C语言实战项目 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、前言 友友们&#xff0c;这篇文章是基于单链…...

MATLAB入门介绍

MATLAB是由MathWorks公司开发的一款专业的数学计算软件&#xff0c;主要用于算法开发、数据可视化、数据分析以及数值计算等领域。它提供了一个易于使用的环境&#xff0c;让用户可以通过矩阵计算、函数和数据绘图、用户界面的创建以及编程和文档编写来解决各种数学问题。 MATL…...

【k8s】:深入理解 Kubernetes 中的污点(Taints)与容忍度(Tolerations)

【k8s】&#xff1a;深入理解 Kubernetes 中的污点&#xff08;Taints&#xff09;与容忍度&#xff08;Tolerations&#xff09; 1、污点&#xff08;Taints&#xff09;2、容忍度&#xff08;Tolerations&#xff09;3、示例演示-测试污点的具体应用场景3.1 给节点打污点&…...

Angular 使用DomSanitizer防范跨站脚本攻击

跨站脚本Cross-site scripting 简称XSS&#xff0c;是代码注入的一种&#xff0c;是一种网站应用程序的安全漏洞攻击。它允许恶意用户将代码注入到网页上&#xff0c;其他用户在使用网页时就会收到影响&#xff0c;这类攻击通常包含了HTML和用户端脚本语言&#xff08;JS&…...

(八)PostgreSQL的数据库管理

PostgreSQL的数据库管理 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;57771 创建数据库 CREATE DATABASE创建一…...

外包干了30天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…...

ruoyi-nbcio-plus基于vue3的flowable的自定义业务单表例子的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…...

【ENSP】华为三层交换机配置AAA认证,开启telnet服务

配置步骤 1.给交换机配置ip地址&#xff0c;以便登陆 2.配置AAA&#xff0c;用户名&#xff0c;密码&#xff0c;服务类型&#xff0c;用户权限 3.配置接入设备的数量 4.开启telnet服务 LSW2交换机配置 u t m #关闭提示 sys …...

collections模块下的Counter函数讲解

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️感谢大家点赞&#x1f44d;&…...

HarmonyOS开发实例:【分布式邮件】

概述 基于TS扩展的声明式开发范式编程语言编写的一个分布式邮件系统&#xff0c;可以由一台设备拉起另一台设备&#xff0c;每次改动邮件内容&#xff0c;都会同步更新两台设备的信息。效果图如下&#xff1a; 搭建OpenHarmony开发环境 完成本篇Codelab我们首先要完成开发环境…...

llama2.c与chinese-baby-llama2语言模型本地部署推理

文章目录 简介Github文档克隆源码英文模型编译运行中文模型&#xff08;280M&#xff09;main函数 简介 llama2.c是一个极简的Llama 2 LLM全栈工具&#xff0c;使用一个简单的 700 行 C 文件 ( run.c ) 对其进行推理。llama2.c涉及LLM微调、模型构建、推理端末部署&#xff08…...

008、Python+fastapi,第一个后台管理项目走向第8步:ubutun 20.04下安装vscode+python环境配置

一、说明 白飘了3个月无影云电脑&#xff0c;开始选了个windows server 非常不好用&#xff0c;后台改为ubuntu想升级到22&#xff0c;没成功&#xff0c;那就20.04吧。 今天先安装下开发环境&#xff0c;后续2个月就想把他当做开发服务器&#xff0c;不知道行不行&#xff0c;…...

2024.4.16 驱动开发

思维导图...

如何在 Ubuntu 14.04 上更改 PHP 设置

简介 PHP 是一种服务器端脚本语言&#xff0c;被许多流行的 CMS 和博客平台如 WordPress 和 Drupal 所使用。它也是流行的 LAMP 和 LEMP 堆栈的一部分。更新 PHP 配置设置是设置基于 PHP 的网站时的常见任务。定位确切的 PHP 配置文件可能并不容易。通常在服务器上会有多个 PH…...

【光伏企业】光伏项目怎么做才能提高效率?

一、精细化项目管理 项目规划&#xff1a;在项目启动前&#xff0c;进行充分的调研和规划&#xff0c;明确项目的目标、规模、预算和时间表&#xff0c;确保各项资源得到合理分配。 团队建设&#xff1a;组建一支高效、专业的项目团队&#xff0c;确保团队成员具备光伏领域的…...

毕设选51还是stm32?51太简单?

如果你更倾向于挑战和深入学习&#xff0c;STM32可能是更好的选择。如果你希望更专注于底层硬件原理&#xff0c;51可能更适合。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff…...

ip addr和ifconfig区别

ip addr和ifconfig都是用于配置和管理网络接口的工具 1. ifconfig ifconfig是较旧的网络配置工具&#xff0c;属于net-tools套件的一部分。 该命令主要用于配置、显示和控制网络接口的参数&#xff0c;如IP地址、子网掩码、广播地址等。 ifconfig命令的功能相对有限&#xff…...

Springboot+Vue项目-基于Java+MySQL的房产销售系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

基础测试工具使用经验

背景 vtune&#xff0c;perf, nsight system等基础测试工具&#xff0c;都是用过的&#xff0c;但是没有记录&#xff0c;都逐渐忘了。所以写这篇博客总结记录一下&#xff0c;只要以后发现新的用法&#xff0c;就记得来编辑补充一下 perf 比较基础的用法&#xff1a; 先改这…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

使用Spring AI和MCP协议构建图片搜索服务

目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式&#xff08;本地调用&#xff09; SSE模式&#xff08;远程调用&#xff09; 4. 注册工具提…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...