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

【算法】高精度(string实现)

模板来自:【C++/string】 大数高精度运算模板

加法

string add(string a, string b)
{string ans;/* 翻转两个数字字符串,使得后面的for循环从个位开始相加 */reverse(a.begin(), a.end());reverse(b.begin(), b.end());/* 初次补0,保证最高位都是‘0’ */a.push_back('0');b.push_back('0');if(a.size() < b.size()) swap(a, b);/* 短的字符串高位补‘0’,使两字符串位数相等 */while(b.size() < a.size()) b.push_back('0');/* 数组c:存放每位相加后的结果  k:字符串补‘0’后的位数 */int c[1000]={0}, k = a.size();/* 从个位开始,模拟加法 */for(int i = 0; i < a.size(); i++){int sum = c[i] + a[i]-'0' + b[i] - '0';c[i] = sum%10;c[i+1] += sum/10;}/* 去除高位零 */while(c[k]==0 && k>=0) k--;/* 输出 */while(k >= 0)ans.push_back(c[k--]+'0');return ans;
}

减法

string sub(string a, string b)
{string ans;/* flag:true表示被减数小于减数,结果为负。false表示结果为正 */bool flag = false;/* 首先判断被减数与减数的大小关系 */if(a.size() < b.size() || (a.size()==b.size() && a < b)){swap(a, b);flag = true;    }reverse(a.begin(), a.end());reverse(b.begin(), b.end());/* 初次补0,保证最高位都是‘0’ */a.push_back('0');  b.push_back('0');if(a.size() < b.size()) swap(a, b);/* 短的字符串高位补‘0’,使两字符串位数相等 */while(b.size() < a.size()) b.push_back('0');int c[1000]={0}, k = a.size();/* 从个位开始,模拟减法 */for(int i = 0; i < a.size(); i++){if(a[i] < b[i]) a[i]+=10, a[i+1]--;c[i] = a[i] - b[i];}/* 去除高位‘0’ */while(c[k]==0 && k>=0) k--;/* 输出 */if(flag) ans.push_back('-');while(k >= 0)ans.push_back(c[k--]+'0');return ans;
}

乘法

string mcl(string a, string b)
{string ans;reverse(a.begin(), a.end());reverse(b.begin(), b.end());/* k:ans字符串可能的最大位数 */int c[1000]={0}, k = a.size()+b.size()+1;/* 从个位开始,模拟乘法:a的每一位乘以b的每一位 */for(int i = 0; i < a.size(); i++)for(int j = 0; j < b.size(); j++){c[i+j] += (a[i]-'0')*(b[j]-'0');  /* c[i+j]暂存初步乘的结果 */c[i+j+1] += c[i+j]/10;   /* 进位 */c[i+j] %= 10;       /* c[i+j]保留个位 */}/* 去除高位‘0’ */while(c[k]==0 && k>=0) k--;/* 输出 */while(k >= 0)ans.push_back(c[k--]+'0');return ans;
}

除法

string div(string a, long long b)
{string ans;/* rest:存储余数 */int c[256] = {0}, rest = 0;/* 从最高位开始,模拟除法 */for(int i = 0; i < a.size(); i++){rest = 10*rest + a[i] - '0';c[i] = rest / b;rest %= b;}// 处理计算结果int k = 0;/* 去除高位‘0’,k最大不能超过a.size()-1,因为商最少也会有1位 */while(c[k] == 0 && k < a.size()-1)k++;for(int i = k; i < a.size(); i++)ans.push_back(c[i]+'0');return ans;
} 

相关文章:

【算法】高精度(string实现)

模板来自&#xff1a;【C/string】 大数高精度运算模板 加法 string add(string a, string b) {string ans;/* 翻转两个数字字符串&#xff0c;使得后面的for循环从个位开始相加 */reverse(a.begin(), a.end());reverse(b.begin(), b.end());/* 初次补0&#xff0c;保证最高位…...

宝塔面板如何删除一个站点

我们一般的网站都是PHPMySQL开发的&#xff0c;所以删除站点&#xff0c;就要先删数据库&#xff0c;再删网站目录 注意&#xff1a;一点要确保无用的再删 删除站点目录...

Android RecyclerView

RecyclerView核心实现官方文档 Once you determine your layout, you need to implement your Adapter and ViewHolder. These two classes work together to define how your data is displayed. The ViewHolder is a wrapper around a View that contains the layout for an…...

【QT教程】QT6命令行工具开发 QT命令行

QT6命令行工具开发 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免…...

基于Springboot的微乐校园管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的微乐校园管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…...

【第6节课笔记】LagentAgentLego

Lagent 最中间部分的是LLM&#xff0c;即为大语言模型模块&#xff0c;他可以思考planning和调用什么action&#xff0c;再将其转发给动作执行器action executer执行。 支持的工具如下&#xff1a; Arxiv 搜索 Bing 地图 Google 学术搜索 Google 搜索 交互式 IPython 解释器 IP…...

【ARMv8/v9 系统寄存器 4 -- ARMv8 通用寄存器详细介绍】

文章目录 ARMv8 通用寄存器通用寄存器X30 寄存器和链接寄存器&#xff08;LR&#xff09;程序计数器&#xff08;PC&#xff09;ARMv8 X30和PC之间的关系小结 ARMv8 通用寄存器 在ARMv9架构中&#xff08;这也适用于ARMv8&#xff0c;因为ARMv9是其进化版本&#xff09;&#…...

一个月速刷leetcodeHOT100 day 01

两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 //哈希表做法 function twoSum(nums, target) { let obj new Map(); for (let i 0; i < nums.length; i…...

Cargo - 构建 rust项目、管理依赖包

文章目录 关于 Cargo构建项目创建工程编译运行buildclean 管理依赖添加依赖updatecheck计时 manual rust 安装可参考&#xff1a;https://blog.csdn.net/lovechris00/article/details/124808034 关于 Cargo Cargo 官方文档 &#xff1a; https://doc.rust-lang.org/cargo/crat…...

内网安全-代理Socks协议路由不出网后渗透通讯CS-MSF控制上线简单总结

我这里只记录原理&#xff0c;具体操作看文章后半段或者这篇文章内网渗透—代理Socks协议、路由不出网、后渗透通讯、CS-MSF控制上线_内网渗透 代理-CSDN博客 注意这里是解决后渗透通讯问题&#xff0c;之后怎么提权&#xff0c;控制后面再说 背景 只有win7有网&#xff0c;其…...

NSSCTF | [SWPUCTF 2021 新生赛]jicao

打开题目&#xff0c;发现高亮显示了一个 php 脚本 这是脚本的内容 <?php highlight_file(index.php); include("flag.php"); $id$_POST[id]; $jsonjson_decode($_GET[json],true); if ($id"wllmNB"&&$json[x]"wllm") {echo $flag;…...

Redis 支持的 Java 客户端都有哪些?

Redis 是一种高性能的键值存储系统&#xff0c;它以其快速、灵活和可扩展的特性而闻名。在 Java 开发中&#xff0c;与 Redis 交互的方式通常是通过使用 Redis 的 Java 客户端。 这些客户端提供了访问 Redis 数据库的接口&#xff0c;使开发人员能够在 Java 应用程序中轻松地使…...

【JavaEE 初阶(四)】多线程进阶

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.常见的锁策略2.1悲观锁vs乐观锁2.2轻量级锁vs重量级锁2.3自旋锁vs挂起锁2.4读写…...

ZOC8 for Mac v8.08.1激活版:卓越性能的SSH客户端

在远程连接和管理的世界中&#xff0c;ZOC8 for Mac以其卓越的性能和丰富的功能&#xff0c;成为了众多专业人士的首选SSH客户端。它支持SSH1、SSH2、Telnet、Rlogin、Serial等多种协议&#xff0c;让您轻松连接到远程服务器。ZOC8拥有简洁直观的界面和强大的功能设置&#xff…...

指针(4)有点难

指针&#xff08;4&#xff09; 来做个简单的回顾&#xff1a; 指针数组&#xff1a; 1.是数组 2.是存放指针的数组 char* arr1[5]; int*arr2[3]; 数组指针&#xff1a; 1 .是指针 2 .指向数组的指针 字符指针&#xff1a;char*pc; 整型指针&#xff1a;int*pi; int …...

初步了解json文件

来自wetab 的AI pro: JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式&#xff0c;但是它使用了类似于编程语言&#xff08;特别是J…...

赶紧收藏!2024 年最常见 100道 Java 基础面试题(四十)

上一篇地址&#xff1a;赶紧收藏&#xff01;2024 年最常见 100道 Java 基础面试题&#xff08;三十九&#xff09;-CSDN博客 七十九、forward和redirect的区别&#xff1f; 在Java Web应用程序中&#xff0c;forward和redirect是两种不同的服务器端重定向机制&#xff0c;它…...

初步了解Kubernetes

目录 1. K8S概述 1.1 K8S是什么 1.2 作用 1.3 由来 1.4 含义 1.5 相关网站 2. 为什么要用K8S 3. K8S解决的问题 4. K8S的特性 5. Kubernetes集群架构与组件 6. 核心组件 6.1 Master组件 6.1.1 Kube-apiserver 6.1.2 Kube-controller-manager 6.1.3 kube-schedul…...

前端工程化的基本介绍

文章目录 一、概念二、前端工程化的细节模块化组件化规范化 一、概念 工程化&#xff0c;可以理解为使用一些方式&#xff0c;去改良提高行业中现有的步骤、设计、应用方式。前端工程化&#xff0c;就是指对前端进行一些流程的标准化&#xff0c;让开发变得更有效率&#xff0…...

linux上Redis安装使用

环境centOS8 redis是缓存数据库&#xff0c;主要是用于在内存中存储数据&#xff0c;内存的读写很快&#xff0c;加快系统读写数据库的速度 一、Linux 安装 Redis 1. 下载Redis 官网下载Downloads - Redis 历史版本Index of /releases/ 本文中安装的版本为&#xff1a;h…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...