蓝桥杯真题------R格式(高精度乘法,高精度加法)

news2025/4/1 20:18:26

对于高精度乘法和加法的同学可以学学这几个题
高精度乘法
高精度加法


文章目录

  • 题意
  • 分析
    • 部分解
    • 全解
  • 后言

题意

在这里插入图片描述
给出一个整数和一个浮点数,求2的整数次幂和这个浮点数相乘的结果最后四舍五入。、

分析

我们可以发现,n的范围是1000,2的1000次方非常大,我们用pow只能求到2的31次方左右,即便我们开了long long也是远远不够的,所以我们显然可以知道,这题肯定是用高精度来写的。
不过如果在比赛的时候没有时间敲高精度(确实很费时间),我们直接暴力跑他这个小范围拿个部分分算了。👇下面给大家看看正解和部分解

部分解

在这里插入图片描述
直接用上最简单的方法,round函数求四舍五入,pow求2的n次幂。然后直接就暴力写了。下面看一下这个代码。

void Solve () {
	int n;double x;
	cin>>n>>x;
	int t = pow(2,n);
	long double pos = round(t*x);
	cout<<pos;
 	return ;
}

这个方法显然不是很好,但是简单。下面看下正解(我的写法,不知道是不是正解,但是过题就是正解)

全解

在这里插入图片描述

对于2的n次幂我们可以求n次高精度,每一次和2相乘,这个时间复杂度我们是可以接受的。
对于浮点数,我们可以直接忽略小数点,在二者相乘完之后我们在往后加小数点,最后根据小数点的位置我们再四舍五入判断再加一,不过这个加一我们不能简单的加一,我们要用高精度。
不过我想了一下发现好像遍历着相加好像更简单
难点部分就是在于高精乘,如果有模板的话,直接复制粘贴一会就写完了,不过没有的话,我们就只能自己手撸了。好难撸

#include <bits/stdc++.h>
using namespace std;
#define int long long 
#define fi first
#define se second
#define ALL(x) x.begin(),x.end()
#define PII pair<int,int>
#define pb push_back

int a[12000],b[12000],c[12000];
string gaojin (string s,string y) {//高精乘模板
	memset(a,0,sizeof a);
	memset(b,0,sizeof b);
	memset(c,0,sizeof c);
	for (int j=s.size()-1,i = 0;j>=0;j--,i++)
	a[i]=s[j]-'0';
	for (int i=0,j=y.size()-1;j>=0;i++,j--)
	b[i]=y[j]-'0';
	for (int i=0;i<y.size();i++)
	{
		for (int j=0;j<s.size();j++)
		c[i+j]+=a[j]*b[i];
	}
	int f=s.size()+y.size();
	for (int i=0;i<f;i++)
	{
		if (c[i]>=10)
		{
			c[i+1]+=c[i]/10;
			c[i]%=10;
		}
	}
	while (c[f]==0&&f>0)
	f--;
	string ans="";
	for (int i=f;i>=0;i--) ans.insert(ans.end(),c[i]+'0');
	
	return ans;	
}

string gaojinjia (string s1,string s2) {//高精加模板
	memset(a,0,sizeof a);
	memset(b,0,sizeof b);
	memset(c,0,sizeof c);
	for (int i=s1.size()-1,j=0;i>=0;i--,j++) a[j] = s1[i]-'0';
	for (int i=s2.size()-1,j=0;i>=0;i--,j++) b[j] = s2[i]-'0';
	int k = max(s1.size(),s2.size());
	for (int i=0;i<k;i++) {
		c[i] += a[i]+b[i];
		if (c[i]>=10) {
			c[i+1] += c[i]/10;
			c[i]%=10;
		}
	}
	string ans;
	if (c[k]!=0) k++; 
	for (int i=k-1;i>=0;i--) ans.insert(ans.end(),c[i]+'0');
	return ans;
}

void Solve () {
	
	int n;string s;//直接读入string形s,方便高精操作
	cin>>n>>s;
	string t = "1";
	while (n--) t = gaojin(t,"2");//不断用高精乘2求2的n次幂
	
	int w = s.find('.');
	string s1 = s.substr(0,w);
	string s2 = s.substr(w+1);
	string S = s1+s2;//将小数点去掉,但是用erase的时候不知道哪里错了,就用简单的加减了
	w = s.size()-w-1;//求出小数点在哪里
	
	string T = gaojin(S,t);//T是乘完之后的数,包括整数和小数,不过小数点没有明确
	char ch = T[T.size()-w];//找到小数点的位置后一位的数字
	
	string ans1 = T.substr(0,T.size()-w);//将整数部分提取出来
	
	if (ch>='5')  cout<<gaojinjia(ans1,"1");//如果小数点后一位大于5,就高精+1
	else cout<<ans1;
 	return ;
}

signed main () {
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int _ = 1;
//	 cin >> _ ;
	while (_--) Solve (); return 0;
}

⚠️注意初始化!!!注意数组范围!!!
由于我总是忘记初始化,所以总是被卡很长时间,写的比较丑陋,对不起。

后言

这题是真的难写,难度到不是很大,就是一个模拟题,不过码量是真不少。写了一下又帮助自己回忆了一下高精度的知识。多加练习,不然容易生疏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2325163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx — Nginx安装证书模块(配置HTTPS和TCPS)

一、安装和编译证书模块 [rootmaster nginx]# wget https://nginx.org/download/nginx-1.25.3.tar.gz [rootmaster nginx]# tar -zxvf nginx-1.25.3.tar.gz [rootmaster nginx]# cd nginx-1.25.3 [rootmaster nginx]# ./configure --prefix/usr/local/nginx --with-http_stub_…

回调后门基础

回调后门概述 回调后门&#xff08;Reverse Shell&#xff09;是一种常见的攻击方式&#xff0c;攻击者通过受害主机主动连接到远程服务器&#xff08;攻击者控制的机器&#xff09;&#xff0c;从而获得远程控制权限。 工作原理 受害者主机 运行一个恶意代码&#xff0c;尝…

深度学习 Deep Learning 第13章 线性因子模型

深度学习 Deep Learning 第13章 线性因子模型 内容概要 本章深入探讨了线性因子模型&#xff0c;这是一类基于潜在变量的概率模型&#xff0c;用于描述数据的生成过程。这些模型通过简单的线性解码器和噪声项捕捉数据的复杂结构&#xff0c;广泛应用于信号分离、特征提取和数…

【个人笔记】用户注册登录思路及实现 springboot+mybatis+redis

基本思路 获取验证码接口 验证码操作用了com.pig4cloud.plugin的captcha-core这个库。 AccountControl的"/checkCode"接口代码&#xff0c;通过ArithmeticCaptcha生成一张验证码图片&#xff0c;通过text()函数得到验证码的答案保存到变量code&#xff0c;然后把图…

聚类(Clustering)基础知识3

文章目录 一、聚类的性能评价1、聚类性能评价&#xff08;1&#xff09;聚类性能评价方法&#xff1a; 2、参考模型 (reference model)&#xff08;1&#xff09;数据集&#xff1a;&#xff08;2&#xff09;聚类结果&#xff1a;&#xff08;3&#xff09;参考模型&#xff1…

RK3588使用笔记:设置程序/服务开机自启

一、前言 一般将系统用作嵌入式设备时肯定要布置某些程序&#xff0c;这时候就需要对程序设置开机自己&#xff0c;否则每次都要人为启动&#xff0c;当有些嵌入式系统未连接显示屏或者无桌面环境去操作启动程序时&#xff0c;程序自启就是必须的了&#xff0c;本文介绍在纯li…

python实现股票数据可视化

最近在做一个涉及到股票数据清洗及预测的项目&#xff0c;项目中需要用到可视化股票数据这一功能&#xff0c;这里我与大家分享一下股票数据可视化的一些基本方法。 股票数据获取 目前&#xff0c;我已知的使用python来获取股票数据方式有以下三种: 爬虫获取&#xff0c;实现…

JavaScript DOM与元素操作

目录 DOM 树、DOM 对象、元素操作 一、DOM 树与 DOM 对象 二、获取 DOM 元素 1. 基础方法 2. 现代方法&#xff08;ES6&#xff09; 三、修改元素内容 四、修改元素常见属性 1. 标准属性 2. 通用方法 五、通过 style 修改样式 六、通过类名修改样式 1. className 属…

ARM向量表

向量表作用说明RVBAR在 AArch64 中&#xff0c;重置向量不再是异常向量表的一部分。 有复位向量的专用配置输入引脚和寄存器。在 AArch64 中&#xff0c;处理器从 IMPLEMENTAION‑DEFINED 地址开始执行&#xff0c; 该地址由硬件输入引 脚RVBARADDR定义&#xff0c; 可以通过 R…

leetcode刷题日记——除自身以外数组的乘积

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求获取数组中每个元素除自己以外的各元素的乘积最简单的方法就是算出数组所有元素的乘积&#xff0c;然后除以自身&#xff0c;即可得到除自身外各元素的乘积 但要考虑到其自身为0的情况&#xff0c;即当期自身为0时&am…

【信奥一本通提高篇】基础算法之贪心算法

原文 https://bbs.fmcraft.top/blog/index.php/archives/22/ 贪心算法 概述 近年来的信息学竞赛试题&#xff0c;经常出现求一个问题的可行解或最优解的题目。这类问题就是我们通常所说的最优化问题。贪心算法是求解这类问题的一种常用算法。在众多的算法中&#xff0c;贪心…

PyQt6实例_批量下载pdf工具_批量pdf网址获取

目录 前置&#xff1a; 步骤&#xff1a; step one 安装包 step two 获取股票代码 step three 敲代码&#xff0c;实现 step four 网址转pdf网址 视频 前置&#xff1a; 1 本系列将以 “PyQt6实例_批量下载pdf工具”开头&#xff0c;放在 【PyQt6实例】 专栏 2 本节讲…

KMeans算法案例

KMeans算法案例 案例介绍 已知&#xff1a;客户性别、年龄、年收入、消费指数 需求&#xff1a;对客户进行分析&#xff0c;找到业务突破口&#xff0c;寻找黄金客户 数据集共包含顾客的数据, 数据共有 4 个特征, 数据共有 200 条。接下来&#xff0c;使用聚类算法对具有相似…

IDApro直接 debug STM32 MCU

使用IDA pro 逆向分析muc 固件的时候&#xff0c; 难免要进行一些动态的debug&#xff0c;来进一步搞清楚一些内存的数据、算法等&#xff0c;这时候使用远程debug 的方式直接在mcu上进行debug 最合适不过了。 不过有个前提条件就是一般来说有的mcu 会被运行中的代码屏蔽 RDP、…

六十天前端强化训练之第三十六天之E2E测试(Cypress)大师级完整指南

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、知识讲解 1. E2E测试核心概念 2. Cypress框架特性 3. 工作原理 4. 测试金字塔定位 二、核心代码示例&#xff1a;用户登录全流程测试 三、实现效果展示 四、学习要…

20250330-傅里叶级数专题之离散傅里叶变换(5/6)

5. 傅里叶级数专题之离散傅里叶变换 推荐视频: 工科生以最快的速度理解离散傅立叶变换(DFT) 哔哩哔哩 20250328-傅里叶级数专题之数学基础(0/6)-CSDN博客20250330-傅里叶级数专题之傅里叶级数(1/6)-CSDN博客20250330-傅里叶级数专题之傅里叶变换(2/6)-CSDN博客20250330-傅里叶…

3.29:数据结构-绪论线性表-上

一、时间复杂度 1、ADT 2、定义法计算时间复杂度&#xff1a;统计核心语句的总执行次数 &#xff08;1&#xff09;例题1&#xff0c;与2022年的真题对比着写 此题关键在于求和公式的转化&#xff0c;类型为&#xff1a;线性循环嵌套非线性循环 2022年那道题如果考场上实在脑…

大模型架构记录13【hr agent】

一 Function calling 函数调用 from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv())from openai import OpenAI import jsonclient OpenAI()# Example dummy function hard coded to return the same weather # In production, this could be your back…

conda 清除 tarballs 减少磁盘占用 、 conda rename 重命名环境、conda create -n qwen --clone 当前环境

&#x1f947; 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 &#x1f389; 声明: 作为全网 AI 领域 干货最多的博主之一&#xff0c;❤️ 不负光阴不负卿 ❤️ 文章目录 conda clean --tarballsconda rename 重命名环境conda create -n qwen --clone …

pycharm相对路径引用方法

用于打字不方便&#xff0c;以下直接手写放图&#xff0c;直观理解