【2024.9.29练习】R 格式

题目描述


题目分析

带小数点的高精度乘法。小数点在计算时忽略,只需在最终打印字符串的时候在合适位置四舍五入即可。对于d\times 2^n,可理解为对d乘2总共n次。因此使用“单精度×高精度”类型的算法足矣。


我的代码

一开始代码有错误,我只想到了对小数点前最后一位四舍五入,却没想到末位进一之后可能会满10,然后要再向前一位借1。后面又写了一个进位函数解决了问题。

并且一开始的最大数组长度写小了LEN=1024,考虑到还有2^{1000}的系数,应该再增加300位。测试用例果真说明如此。看来以后数组长度能开大还是尽量大一些。

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
const int LEN = 2030; //数组最大长度
//预处理
void clear(int a[]) {for (int i = 0; i < LEN; ++i) a[i] = 0;
}
//是否有浮点
int p = 0; //默认的小数点在第几位之前
bool check_point(string s) {int len = s.length();for (int i = 0; i < len; i++) {if (s[i] == '.') {p = len - i - 1;return true;}}return false;
}
//读取字符串并转换为高精度数组
void read(int a[]) {string s;cin >> s;clear(a);int len = s.length();if (check_point(s)) {int j = 0;for (int i = 0; i < len; i++) {if (s[i] == '.') {j--;}else {a[len - j - 2] = s[i] - '0';}j++;}}else {for (int i = 0; i < len; i++) a[len - i - 1] = s[i] - '0';}
}
//高精度×单精度
void mul_short(int a[], int b, int c[]) {clear(c);for (int i = 0; i < LEN - 1; ++i) {c[i] += a[i] * b;if (c[i] >= 10) {c[i + 1] += c[i] / 10;c[i] %= 10;}}
}
//数组复制
void copyy(int a[],int b[]) { //a to bclear(b);for (int i = 0; i < LEN; i++) {b[i] = a[i];}
}
void print(int a[]) {int i;for (i = LEN - 1; i >= p+1; i--)if (a[i] != 0) break;for (; i >= p; --i) cout << a[i];
}
void print2(int a[]) {int i;for (i = LEN - 1; i >= 1; --i)if (a[i] != 0) break;for (; i >= 0; --i) putchar(a[i] + '0');putchar('\n');
}
void addone(int a[],int p) {a[p]++;if (a[p] >= 10) {a[p] %= 10;addone(a,p+1);}
}
int d[LEN];
int ans[LEN];
int main() {int n;cin >> n;read(d);//乘2共n次for (int i = 0; i < n; i++){mul_short(d, 2, ans);copyy(ans, d);}//print2(ans);if (ans[p - 1] > 4) {addone(ans,p);}print(ans);return 0;
}

这道题不仅函数不完全是我自己写的(因为记不住),而且编写和纠错过程也十分漫长,常常被自己绕晕。高精度运算函数默写难度还是很大的,目前自己各方面的水平都还完全不行,要熟练掌握算法还需多加训练和思考!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI大模型之旅-最强开源文生图工具Stable Diffusion WebUI 教程

1.1克隆 Automatic1111 的 GitHub 仓库 在你想安装 Web UI 的文件夹路径下执行 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui 这将会克隆整个仓库到本地。 这里会默认访问 https://huggingface.co/ 下载 因此需要魔法 1.2 进入仓库目录 cd stable-di…

无人机培训机构配套教学无人机技术详解

无人机培训机构配套的教学无人机技术&#xff0c;是一个涉及多学科交叉、技术密集型的领域。以下是对该技术的详细解析&#xff1a; 一、无人机技术概述 无人机技术是一个涵盖航空工程、电子工程、计算机科学、材料科学和人工智能等多个学科的综合性领域。其核心在于实现无人…

python并发编程实战

python并发编程有三种 多线程Thread多进程Process多协程Coroutine cpu密集型计算 cpu密集型也叫计算密集型&#xff0c;是指I/O在很短的时间就可以完成&#xff0c;cpu需要大量的计算处理&#xff0c;特点是cpu占用率相当高 例如&#xff1a;压缩解压缩、加密解密、正则表达…

Redis:持久化

1. Redis持久化机制 Redis 支持 RDB 和 AOF 两种持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的文件即可实现数据恢复。 2.RDB RDB 持久化是把当前进程数据⽣成快照保存到硬盘的过程&#xff0c;触发 RDB…

从AR眼镜到智能巡检:XR技术的演变与未来潜力

XR&#xff0c;即扩展现实&#xff08;Extended Reality&#xff09;&#xff0c;是一个涵盖了增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和混合现实&#xff08;MR&#xff09;的广泛概念。 从我们最初接触到的手机应用到Hololens&#xff0c;…

Linux 网络配置 (深入理解)

前言 前期我比较迷惑Ubuntu 的网络配置。 我接触比较多的 Linux 发行版都是 Ubuntu &#xff0c;我按照网上的一些教程配置网络发现&#xff0c;没有相关网络配置文件夹。然后我发现不是我的问题而是不同版本的配置方式和工具是不一样的。然后有些配置已经弃用了。 常见的网络…

fmql之Linux异步通知

正点原子第35章。 Linux下的异步通知_linux异步通知-CSDN博客 异步通知简介 驱动中的信号处理 应用程序对异步通知的处理 代码 async.c asyncAPP.c 运行

作家依靠AI一年内创作120部作品

近期&#xff0c;Tim Boucher因声称自己依托人工智能&#xff08;AI&#xff09;完成了逾120部作品而在社交网络上引起广泛关注。 Boucher的这种创作手法引发了众多讨论和争议。一些批评者对他依靠AI写作表示不满&#xff0c;认为这种做法缺乏诚实性&#xff0c;甚至涉嫌抄袭。…

利用git将项目上传到github

采用git而不是在pycharm中共享的原因&#xff1a;可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码

基于CNN+Transformer混合模型实现交通流量时序预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…

Ansible集群服务部署案例

案例描述 本案例共讲述了多个节点部署Elk集群日志分析系统&#xff0c;分别在三个节点使用ansible部署Kibana、Logstash以及Elasticsearch服务。 案例准备 1. 规划节点 IP 主机名 节点 192.168.100.25 ansible Ansible节点 192.168.100.35 node1 Elasticsearch/Kiba…

利用低代码快速搭建电商小程序之商品列表页

目标&#xff1a; 搭建商城的一个商品列表页面&#xff08;先做静态页&#xff09; 开发环境&#xff1a; 访问白码低代码平台&#xff1a;https://www.bnocode.com/ 白码的新自定义页功能&#xff08;使用vue框架&#xff09; 前期准备&#xff1a; 需要先准备商品数据表…

[网络]NAT、代理服务、内网穿透、内网打洞

目录 一、NAT 1.1 NAT 技术背景 1.2 NAT IP 转换过程 1.3 NAPT&#xff08;Network Address Port Translation&#xff09; 1.地址转换表 2. NAPT&#xff08;网络地址端口转换Network Address Port Translation&#xff09; 3. NAT技术的缺陷 二、代理服务器 2.1 正向…

济南站活动回顾|IvorySQL中的Oracle XML函数使用示例及技术实现原理

近日&#xff0c;由中国开源软件推进联盟PG分会 & 齐鲁软件园联合发起的“PostgreSQL技术峰会济南站”在齐鲁开源社举办。瀚高股份IvorySQL作为合作伙伴受邀参加此次活动。 瀚高股份IvorySQL技术工程师 向逍 带来「IvorySQL中的Oracle XML函数兼容」的议题分享。在演讲中&a…

EasyCVR视频汇聚平台:解锁视频监控核心功能,打造高效安全监管体系

随着科技的飞速发展&#xff0c;视频监控技术已成为现代社会安全、企业管理、智慧城市构建等领域不可或缺的一部分。EasyCVR视频汇聚平台作为一款高性能的视频综合管理平台&#xff0c;凭借其强大的视频处理、汇聚与融合能力&#xff0c;在构建智慧安防/视频监控系统中展现出了…

后端Java-SpringBoot整合MyBatisPlus步骤(超详细)

1.新建项目。 2.点击完上一步的next之后&#xff0c;选择pom.xml文件中的依赖。 3.点击pom文件进行项目初始化。 按照下面的俩步骤刷新一下maven &#xff0c;让文件生效 4.新建一个application.yml文件 5. 新建一个数据库mp&#xff0c;在数据库中新建一张user表 6.连接数据…

pdf文档翻译成英文很简单?搞定复杂的外语文献文档就靠它

转眼间又是一年国庆&#xff0c;怎么样&#xff0c;大一新生们适应得还好吗&#xff1f; 没事&#xff0c;刚到陌生的校园环境中&#xff0c;分分钟都在想家&#xff0c;还没适应集体宿舍生活很正常的...... 什么&#xff1f;已经有同学在着手准备写论文了&#xff1f;而且需要…

Facebook对现代社交互动的影响

自2004年成立以来&#xff0c;Facebook已经成为全球最大的社交媒体平台之一&#xff0c;改变了人们的交流方式和社交互动模式。作为一个数字平台&#xff0c;Facebook不仅为用户提供了分享生活点滴的空间&#xff0c;也深刻影响了现代社交互动的各个方面。本文将探讨Facebook如…

git使用“保姆级”教程4——版本回退及分支讲解

一、版本回退 1、历史回退(版本回退)——命令行git reset --hard 版本编号 注意&#xff1a;当前命令会让工作区的内容发生改变&#xff0c;可以理解成历史区(master分支)直接回到工作区比如&#xff1a;从版本4回到版本3&#xff0c;则工作区只会显示版本3的代码内容 1.1、指…

【Postgresql】安装新手教程

在以下postgresql官网下载软件 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads下载完成后安装&#xff0c;找个记事本记录下安装过程中填写的数据库管理原的password和port 在所有程序目录中打开pgadmin 输入刚才的数据库管理员密码 自动跳转到以下…