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

高精度模拟算法

高精度模拟算法

  • 高精度加法
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];
}
  • 高精度除法
  1. 低精度/低精度 商为高精度型(保留小数点后 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;
    }
    
  2. 高精度/低精度型(逐位试商法)

    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];
    }
    
  3. 高精度/高精度型(减法模拟法)

    #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添加水印&#xff0c;内容多的时候会往下跑&#xff0c;修改为获取当前页面高度&#xff0c;进行固定在顶部&#xff0c;其他需要可以自己进行调整&#xff0c;直接贴代码。 public static void main(String[] args) throws IOException {String localFilePath "…...

docker端口映射成功,docker端口不生效的问题解决,外界无法访问docker映射端口

docker端口映射不生效的问题解决 问题 使用docker run -p 88848:8848后&#xff0c;显示容器启动正常&#xff0c;并且使用docker logs –f xxx能够看到容器可以正常启用&#xff0c;docker ps 可以看到容器启动成功&#xff0c;并且端口已经映射,但是在浏览器访问相关地址&am…...

RSA非对称加密解密,前端公钥加密后端私钥解密

RSA非对称加密解密&#xff0c;前端公钥加密后端私钥解密&#xff0c;可以防止陌生人直接通过后端接口篡改数据。有数据泄露的风险。 前端&#xff1a;Vue框架 后端&#xff1a;sprintboot&#xff08;Java&#xff09; 工具类&#xff1a;hutool 前端Vue获取公钥&#xff1a…...

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组真题

问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位&#xff0c;因为对高位的影响永远大于对低位的影响。然后我们再来分析一下&#xff0c;如何使用这两种操作&#xff1f;对于加操作&#xff0c;如果能使这一位的数字加到9则变成9&#xff0…...

查看微信小程序主包大小

前言 略 查看微信小程序主包大小 在微信开发者工具右上角找到“详情->基本信息” 查看微信小程序主包构成 通过微信开发者工具中的“代码依赖分析”工具查看...

B树与B+树的奥秘:原理解析与性能

引言 B树和B树是计算机科学中两个重要的数据结构&#xff0c;它们在数据库和文件系统中扮演着至关重要的角色。在处理大量数据时&#xff0c;高效的数据组织和检索方式是至关重要的&#xff0c;而B树和B树正是为此而设计的。 B树和B树都是多路查找树的变体&#xff0c;它们通…...

Unity组件入门篇目录

Audio AudioChorusFilter......................................点击导航AudioDistortionFilter..................................点击导航AudioEchoFilter.........................................点击导航AudioHighPassFilter..................................点击导…...

【Python技术】使用akshare、pandas高效复盘每日涨停板行业分析

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

kubeflow文档-介绍与架构

1. kubeflow介绍 Kubeflow项目致力于使机器学习&#xff08;ML&#xff09;工作流在Kubernetes上的部署变得简单、可移植和可扩展。目标不是重新创建其他服务&#xff0c;而是提供一种直接的方法&#xff0c;将ML的开源系统部署到不同的基础设施中。无论在哪里运行Kubernetes&a…...

传输层的TCP流量控制比数据链路层作用范围更广

数据链路层的流量控制主要在相邻节点之间进行&#xff0c;它确保在单个链路或网络段上不会发生数据过载。例如&#xff0c;在以太网中&#xff0c;数据链路层使用停止-等待协议或滑动窗口机制来限制发送方发送的数据量&#xff0c;以避免接收方无法处理数据。 而传输层的 TCP 流…...

CSS表格

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

东芝移动硬盘数据恢复方法有哪些

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

FullCalendar日历组件集成实战(1)

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

wps

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

【软设】常见易错题汇总

目录 计算机系统基础 程序语言基础 数据结构 算法设计与分析 计算机网络与信息安全 软件工程基础 开发方法&#xff08;结构化与面向对象&#xff09; 数据库 操作系统 知识产权相关的法律法规 &#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f92f;&#x1f9…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

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()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...