高精度模拟算法
高精度模拟算法
- 高精度加法
extern string m,n;
extern int a[MAX],b[MAX],ans[MAX];
void addition(){int _m=max(m.size(),n.size());reverse(m.begin(),m.end()),reverse(n.begin(),n.end());//转置原字符串for(int i=0;i<m.size();i++) a[i]=m[i]-'0';//字符型以ASCII码存储,需要转换为整形for(int i=0;i<n.size();i++) b[i]=n[i]-'0';//核心部分for(int i=0;i<_m;i++){ans[i]+=(a[i]+b[i]);ans[i+1]+=ans[i]/10;//处理进位 (进位可能不止1,故不写ans[i+1]++)ans[i]%=10;//确定最终结果}while((c[_m]==0&&_m>0)) _m--;//删前导零for(int i=_m;i>=0;i--) cout<<ans[i];
}
- 高精度减法
extern string m,n;
extern int a[MAX],b[MAX],ans[MAX];
extern bool flag;//标识原结果为负,最后需输出负号
void subtractive(){int _m=max(m.size(),n.size());//交换两字符串,使被减数>减数if(m.size()<n.size()) swap(m,n),flag=1;//位数小的直接交换else if(m.size()==n.size())//位数相等逐位比较for(int i=0;i<_m;i++)if(m[i]<n[i]) swap(m,n),flag=1;reverse(m.begin(),m.end()),reverse(n.begin(),n.end());//转置原字符串for(int i=0;i<m.size();i++) a[i]=m[i]-'0';//字符型以ASCII码存储,需要转换为整形for(int i=0;i<n.size();i++) b[i]=n[i]-'0';//核心部分for(int i=0;i<_m;i++){if(a[i]<b[i]){//处理借位a[i+1]--;//下一位被借1个a[i]+=10;//本位+10}ans[i]=a[i]-b[i];}if(flag) cout<<'-';while(ans[_m]==0&&_m>0) _m--;//删除前导零 注意减法相同数字相减为0 因此可能有多个前导零for(int i=_m;i>=0;i--) cout<<ans[i];
}
- 高精度乘法
extern string m,n;
extern int a[MAX],b[MAX],ans[2*MAX];//两数相乘结果最长为两数长之和
void subtraction(){int _m=m.size()+n.size();//两数相乘结果最长为两数长之和reverse(m.begin(),m.end()),reverse(n.begin(),n.end());//转置原字符串for(int i=0;i<m.size();i++) a[i]=m[i]-'0';for(int i=0;i<n.size();i++) b[i]=n[i]-'0';for(int i=0;i<m.size();i++){for(int j=0;j<n.size();j++){ans[i+j]+=b[j]*a[i];//每位相乘,结果索引为每位索引之和ans[i+j+1]+=ans[i+j]/10;//处理进位 由于进位可能不止1,故不写ans[i+1]++ans[i+j]%=10;//确定最终结果}}while(ans[_m]==0&&_m>0) _m--;//删前导零for(int i=_m;i>=0;i--) cout<<ans[i];
}
- 高精度除法
-
低精度/低精度 商为高精度型(保留小数点后 n n n位问题)
extern int a,b,n,t;//a:被除数 b:除数 n:小数点后保留位数 t:余数 extern string ans; void division(){ans+=to_string(a/b)+'.';t=a%b;//更新余数while(n--){ans+=to_string(t*10/b);t=t*10%b;//更新余数t}cout<<ans; }
-
高精度/低精度型(逐位试商法)
extern string m;//m:被除数 extern long long n,a[MAX],ans[MAX],x;//n:除数 x:余数 void division(){int _m=m.size();//商的最大长度为被除数长度for(int i=0;i<_m;i++) a[i]=m[i]-'0';for(int i=0;i<_m;i++){ans[i]=(x*10+a[i])/n;//商=(余数*10+本位)/除数x=(x*10+a[i])%n;//更新余数=(余数*10+本位)%除数}int i=0;while(ans[i]==0&&i<_m-1) j++;//删前导零 注意不能把0全删了for(;i<_m;i++) cout<<ans[i]; }
-
高精度/高精度型(减法模拟法)
#include <bits/stdc++.h> using namespace std; // 减法部分 int a[101],b[101],c[101],d,i; void inp(int a[]){ // 读入 string s;cin >> s; //读入字符串a[0] = s.size(); //a[0]储存字符串的长度for (i = 1;i <= a[0];i++) a[i] = s[a[0] - i] - '0'; } void pri(int a[]){ // 输出 if (a[0] == 0){cout << "0" << endl;return;}for (i = a[0];i > 0;i--) cout << a[i];cout << endl;return; } int cmp(int a[],int b[]){//比较a和b的大小关系,若a>b则为1,若a<b则为-1,若a=b则为0if (a[0] > b[0]) return 1; //若a的位数大于b,则a>bif (a[0] < b[0]) return -1; //若a的位数小于b,则a<bfor (i = a[0];i > 0;i--){if (a[i] > b[i]) return 1;if (a[i] < b[i]) return -1;}return 0; } void jian(int a[],int b[]){ int pd = cmp(a,b); // 比较大小 if (pd == 0){ // 相等 a[0] = 0;return;}else if (pd == 1){for (i = 1;i <= a[0];i++){if (a[i] < b[i]) a[i + 1]--,a[i] += 10; // 借位 if (a[i] >= b[i]) a[i] -= b[i];}while((a[a[0]] == 0) && (a[0] > 0)) a[0]--;return;} } void numcpy(int p[],int q[],int det){for (i = 1;i <= p[0];i++) q[i + det - 1] = p[i];q[0] = p[0] + det - 1; } void chugao(int a[],int b[],int c[]){int i,tmp[101];c[0] = a[0] - b[0] + 1;for (i = c[0];i > 0;i--){memset(tmp,0,sizeof(tmp));numcpy(b,tmp,i);while (cmp(a,tmp) >= 0){c[i]++;jian(a,tmp);}}while((c[c[0]] == 0) && (c[0] > 0)) c[0]--; }// 应用部分 int main(){inp(a),inp(b);chugao(a,b,c);pri(c),pri(a);return 0; }
相关文章:
高精度模拟算法
高精度模拟算法 高精度加法 extern string m,n; extern int a[MAX],b[MAX],ans[MAX]; void addition(){int _mmax(m.size(),n.size());reverse(m.begin(),m.end()),reverse(n.begin(),n.end());//转置原字符串for(int i0;i<m.size();i) a[i]m[i]-0;//字符型以ASCII码存储&…...

Ansible简介版
目录 架构 环境部署 一、Ansible安装部署 1.yum安装Ansible 2.修改主机清单文件 3.配置密钥对验证 4.ansible-doc 5.看被控主机 二、常用模块 1.Command模块 2.Shell模块 3.Cron模块 1.添加 2.删除 4.User模块 5.Group模块 1.创建组 编辑 编辑 编辑…...

卷积通用模型的剪枝、蒸馏---蒸馏篇--RKD关系蒸馏(以deeplabv3+为例)
本文使用RKD实现对deeplabv3+模型的蒸馏;与上一篇KD蒸馏的方法有所不同,RKD是对展平层的特征做蒸馏,蒸馏的loss分为二阶的距离损失Distance-wise Loss和三阶的角度损失Angle-wise Loss。 完整代码放在文末。 一、RKD简介 RKD算法的核心是以教师模型的多个输出为结构单元,取…...

AVL树的完全指南:平衡与性能
文章目录 AVL树简介AVL的操作建立一个AVL树插入操作删除操作 书写代码1.构造函数和析构函数2.获取最大值和最小值3.树的高度和节点个数3.前序中序和后序遍历4.判断树是否为空树5.四个旋转操作6.获取平衡因子7.插入操作8.删除操作9.搜索节点.h文件中的定义 总结 AVL树简介 AVL树…...
itext7 PDF添加水印,获取页面高度,添加到页面右上角
ps: pdf添加水印,内容多的时候会往下跑,修改为获取当前页面高度,进行固定在顶部,其他需要可以自己进行调整,直接贴代码。 public static void main(String[] args) throws IOException {String localFilePath "…...

docker端口映射成功,docker端口不生效的问题解决,外界无法访问docker映射端口
docker端口映射不生效的问题解决 问题 使用docker run -p 88848:8848后,显示容器启动正常,并且使用docker logs –f xxx能够看到容器可以正常启用,docker ps 可以看到容器启动成功,并且端口已经映射,但是在浏览器访问相关地址&am…...
RSA非对称加密解密,前端公钥加密后端私钥解密
RSA非对称加密解密,前端公钥加密后端私钥解密,可以防止陌生人直接通过后端接口篡改数据。有数据泄露的风险。 前端:Vue框架 后端:sprintboot(Java) 工具类:hutool 前端Vue获取公钥:…...
Nginx-01-Nginx 是什么? 能做什么?
nginx 系列 Nginx-01-聊一聊 nginx Nginx-01-Nginx 是什么 Nginx-02-为什么使用 Nginx Nginx-02-Nginx Ubuntu 安装 windows10 WSL ubuntu 安装 nginx 实战笔记 Nginx-02-基本使用 Nginx-03-Nginx 项目架构 Nginx-04-Docker Nginx Nginx-05-nginx 反向代理是什么&…...

最大数字——蓝桥杯十三届2022国赛大学B组真题
问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位,因为对高位的影响永远大于对低位的影响。然后我们再来分析一下,如何使用这两种操作?对于加操作,如果能使这一位的数字加到9则变成9࿰…...

查看微信小程序主包大小
前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看...
B树与B+树的奥秘:原理解析与性能
引言 B树和B树是计算机科学中两个重要的数据结构,它们在数据库和文件系统中扮演着至关重要的角色。在处理大量数据时,高效的数据组织和检索方式是至关重要的,而B树和B树正是为此而设计的。 B树和B树都是多路查找树的变体,它们通…...
Unity组件入门篇目录
Audio AudioChorusFilter......................................点击导航AudioDistortionFilter..................................点击导航AudioEchoFilter.........................................点击导航AudioHighPassFilter..................................点击导…...

【Python技术】使用akshare、pandas高效复盘每日涨停板行业分析
作为一个程序员宝爸,每天的时间很宝贵,工作之余除了辅导孩子作业,就是补充睡眠。 怎么快速高效的进行当天A股涨停板的复盘,便于第二天的跟踪。这里简单写个示例, 获取当天连涨数排序,以及所属行业排序。 …...

kubeflow文档-介绍与架构
1. kubeflow介绍 Kubeflow项目致力于使机器学习(ML)工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务,而是提供一种直接的方法,将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…...
传输层的TCP流量控制比数据链路层作用范围更广
数据链路层的流量控制主要在相邻节点之间进行,它确保在单个链路或网络段上不会发生数据过载。例如,在以太网中,数据链路层使用停止-等待协议或滑动窗口机制来限制发送方发送的数据量,以避免接收方无法处理数据。 而传输层的 TCP 流…...

CSS表格
标准的表格结构 table标签:定义表格 caption标签:定义表格标题,这个标题会居中显示在表格上,一个表格只能定义一个标题 th标签:定义表格的表头,通常成粗体居中表示 tr标签:定义表格的一行 td标…...

东芝移动硬盘数据恢复方法有哪些
谁能懂我此刻的心情啊!移动硬盘用起来真的超级方便,如今我的工作几乎都离不开它,用来存放各种重要文件。可是,让人头疼的事情发生了,昨天我发现移动硬盘里的部分数据竟然莫名其妙地消失了!这可咋整啊&#…...

FullCalendar日历组件集成实战(1)
背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件࿰…...

wps
文章目录 取消自动升级、WPS热点及广告推送excel数字大小排序函数不起作用vlookup函数 取消自动升级、WPS热点及广告推送 打开WPS Office,点击左上角“首页”图标,依次点击右上角“设置”—>“配置和修复工具”。在弹出框点击“高级”,选…...

【软设】常见易错题汇总
目录 计算机系统基础 程序语言基础 数据结构 算法设计与分析 计算机网络与信息安全 软件工程基础 开发方法(结构化与面向对象) 数据库 操作系统 知识产权相关的法律法规 🤯🤯🤯🤯🤯ǹ…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...