GESP5级语法知识(十一):高精度算法(一)



























高精度加法:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=501;//高精度数的最长长度
//c[]=a[]+b[]:高精度加法方案一:对应位相加,同时处理进位
void h_add_1(int a[],int b[],int c[])
{int la=a[0] ;int lb=b[0];int lc=max(la,lb);int x=0; //进位for(int i=1;i<=lc;i++) {c[i]=a[i]+b[i]+x;x=c[i]/10;c[i]%=10;}//处理最高进位if(x>0) {lc++;c[lc]=x;}c[0]=lc;
}
//c[]=a[]+b[]:高精度加法方案二:先对应位相加,然后处理进位。 void h_add_2(int a[],int b[],int c[]) {int la=a[0] ;int lb=b[0];int lc=max(la,lb);//对应位相加 for(int i=1;i<=lc;i++) {c[i]=a[i]+b[i];}//处理进位for(int i=1;i<=lc;i++) {c[i+1]+=c[i]/10;c[i]%=10;}c[0]=(c[lc+1]!=0)? (lc+1):lc;}//把字符串转换成按位表示的整型数组int convert(string s,int n[]) {int length=s.length();//将数串s转换为 数组n[] ,并倒序存储for(int i=1;i<=length;i++) {n[i]=s[length-i]-'0';}//n[0]存储位数 n[0]=length;return length;}//删除先导0;修正位数 int trim(int n[]){int length=n[0];for(int i=n[0];i>=0;i--){//找到不是0的最高位 if(n[i]!=0){length=i;break;}}n[0]=length;return length;}void output(int n[]){int length=n[0];//0需要特别处理if(length==0) {cout<<0<<endl;return ;}//从高位向低位输出 for(int i=length;i>=1;i--){cout<<n[i];}cout<<endl;}int a[N+1]; //第一个加数 int b[N+1]; //第二个加数 int c1[N+2]; //方法一计算结果 int c2[N+2]; //方法二计算结果int main() {string s1,s2;cin>>s1>>s2;convert(s1,a);convert(s2,b);//方案一h_add_1(a,b,c1);trim(c1) ;output(c1);//方案二h_add_2(a,b,c2) ;trim(c2);output(c2);return 0;}
高精度减法:
#include<iostream>
#include<string> //C++string类
#include<algorithm>
using namespace std;
const int N=10001;//高精度数的最长长度
//c[]=a[]-b[]:高精度减法方案一:对应位相减,同时处理借位
void h_minus_1(int a[],int b[],int c[])
{int lc=c[0]=a[0];int q=0; //借位 for(int i=1;i<=lc;i++) {//对应位相减,并减去上一位的借位 c[i]=a[i]-b[i]-q;if(c[i]<0) //不够减就借位 {c[i]+=10;q=1; }else q=0;}}
//c[]=a[]-b[]:高精度减法方案二:先对应位相减,然后处理进位。 void h_minus_2(int a[],int b[],int c[]) {int lc=c[0]=a[0];//对应位相减for(int i=1;i<=lc;i++) {c[i]=a[i]-b[i];}//处理借位for(int i=1;i<=lc;i++) {if(c[i]<0){//计算借位数字为负数int k=(c[i]%10)?(c[i]/10-1):c[i]/10;c[i+1]+=k; //高位c[i]-=10*k; //当前位 }} }//比较高精度数字的大小,a>b为1, a<b为-1, a=b为0 int compare(int a[],int b[]){//a的位数大于b,则a比b大if(a[0]>b[0]) {return 1;}//a的位数小于b,则a比b小 if(a[0]<b[0]) {return -1;}int la=a[0];for(int i=la;i>0;i--){if(a[i]>b[i]){return 1;}if(a[i]<b[i]){return -1;}}return 0;}//把字符串转换成按位表示的整型数组int convert(string s,int n[]) {int length=s.length();//将数串s转换为 数组n[] ,并倒序存储for(int i=1;i<=length;i++) {n[i]=s[length-i]-'0';}//n[0]存储位数 n[0]=length;return length;}//删除先导0;修正位数 int trim(int n[]){int length=n[0];for(int i=n[0];i>=0;i--){//找到不是0的最高位 if(n[i]!=0){length=i;break;}}n[0]=length;return length;}//输出高精度数据 void output(int n[]){int length=n[0];//0需要特别处理if(length==0) {cout<<0<<endl;return ;}//从高位向低位输出 for(int i=length;i>=1;i--){cout<<n[i];}cout<<endl;}int a[N+1]; //被减数 int b[N+1]; //减数int c1[N+2]; //方法一计算结果 int c2[N+2]; //方法二计算结果int main() {string s1,s2;cin>>s1>>s2;convert(s1,a);convert(s2,b);//比较被减数与减数int sign=compare(a,b) ;if(sign<0){swap(a,b);}//方案一h_minus_1(a,b,c1);trim(c1) ;if(sign<0){cout<<"-";}output(c1);//方案二h_minus_2(a,b,c2) ;trim(c2);if(sign<0){cout<<"-";}output(c2);return 0;}
高精度数的比较:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=501;//高精度数的最长长度int convert(string s,int n[]) {int length=s.length();//将数串s转换为 数组n[] ,并倒序存储for(int i=1;i<=length;i++) {n[i]=s[length-i]-'0';}//n[0]存储位数 n[0]=length;return length;}//删除先导0;修正位数 int trim(int n[]){int length=n[0];for(int i=n[0];i>=0;i--){//找到不是0的最高位 if(n[i]!=0){length=i;break;}}n[0]=length;return length;}int compare(int a[],int b[]){//a的位数大于b,则a比b大if(a[0]>b[0]) {return 1;}//a的位数小于b,则a比b小 if(a[0]<b[0]) {return -1;}int la=a[0];for(int i=la;i>0;i--){if(a[i]>b[i]){return 1;}if(a[i]<b[i]){return -1;}}return 0;}int a[N+1]; int b[N+1];int main() {string s1,s2;cin>>s1>>s2;convert(s1,a);convert(s2,b);trim(a);trim(b);cout<<compare(a,b)<<endl;return 0;}
高精度数的存储与存储:
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=501;//高精度数的最长长度int convert(string s,int n[]) {int length=s.length();//将数串s转换为 数组n[] ,并倒序存储for(int i=1;i<=length;i++) {n[i]=s[length-i]-'0';}//n[0]存储位数 n[0]=length;return length;}//删除先导0;修正位数 int trim(int n[]){int length=n[0];for(int i=n[0];i>=0;i--){//找到不是0的最高位 if(n[i]!=0){length=i;break;}}n[0]=length;return length;}void output(int n[]){int length=n[0];//0需要特别处理if(length==0) {cout<<0<<endl;return ;}//从高位向低位输出 for(int i=length;i>=1;i--){cout<<n[i];}cout<<endl;}int a[N+1]; //第一个加数 int main() {string s1;cin>>s1;convert(s1,a);trim(a);output(a);return 0;}
2的乘方(高精度)
#include<iostream>
int a[100001];
using namespace std;
int main()
{int n,i,j,x,len=1; //len=1,位数初始化为1 cin>>n;a[1]=1; //得数初始化为1 for(i=1;i<=n;i++) //计算n次 {x=0; //x表示进位,初始化为0 for(j=1;j<=len;j++){a[j]=a[j]*2+x;//得数每一位都*2,再加进位 x=a[j]/10; //计算进位a[j] %=10; //保留个位数if(x!=0&&j==len) len++; //计算到最高位,并且有进位,长度加1 }} for(i=len;i>=1;i--) cout<<a[i];return 0;
}
相关文章:
GESP5级语法知识(十一):高精度算法(一)
高精度加法: #include<iostream> #include<string> #include<algorithm> using namespace std; const int N501;//高精度数的最长长度 //c[]a[]b[]:高精度加法方案一:对应位相加,同时处理进位 void h_add_1(int a[],int b…...
【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用
一、场景描述 我想写一个轮播图的程序,只是把bootstrap里面的轮播图拉过来就用上感觉不是很合适,然后我就想自己写自动轮播,因此,这篇文章里面只是自动轮播的部分,没有按键跟自动轮播的衔接部分。 Ps: 本文用的是函数…...
PYYAML反序列化详解
前言 最近看了很多pyyaml反序列化的漏洞利用,但是对漏洞怎么来的,没有进行很详细的分析,所以今天刚好学习一下反序列化的原理 Yaml基本语法 一个 .yml 文件中可以有多份配置文件,用 --- 隔开即可对大小写敏感YAML 中的值&#x…...
【离散数学上机】T235,T236
T235题目:输入集合A和B,输出A到B上的所有单射函数。 问题描述 给定非空数字集合A和B,求出集合A到集合B上的所有单射函数。 输入格式 第一行输入m和n(空格间隔),分别为集合A和集合B中的元素个数;…...
LeeCode题库第十八题
项目场景: 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复)&…...
Zookeeper 和 Redis 哪种更好?
目录 前言 : 什么是Zookeeper 和 Redis ? 1. 核心定位与功能 2. 关键差异点 (1) 一致性模型 (2) 性能 (3) 数据容量 (4) 高可用性 3. 适用场景 使用 Zookeeper 的场景 使用 Redis 的场景 4. 替代方案 5. 如何选择? 6. 常见误区 7. 总结 前言…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_localtime 函数
ngx_localtime 函数 声明 在 src\os\unix\ngx_time.h 中: void ngx_localtime(time_t s, ngx_tm_t *tm); 定义 在 src/os/unix/ngx_time.c 中 void ngx_localtime(time_t s, ngx_tm_t *tm) { #if (NGX_HAVE_LOCALTIME_R)(void) localtime_r(&s, tm);#elsengx_tm…...
SpringBoot初始化8个常用方法
在 Spring Boot 中,初始化方法通常是在应用程序启动时被调用的,可以用来执行应用启动时的一些准备工作。以下是几种常见的初始化方法: 一、顺序 1. 图解 ┌─────────────────────────────┐│ Spring Boot…...
vue组件中各种类型之间的传值
在Vue CLI项目中,组件间的属性传值是一个常见的需求。以下是一些常用的传值方法和规范,以及相应的代码演示和解说: 一. 父组件向子组件传值(Props) 规范:父组件通过属性(props)向子…...
公然上线传销项目,Web3 的底线已经被无限突破
作者:Techub 热点速递 撰文:Yangz,Techub News 今天早些时候,OKX 将上线 PI 的消息在圈内引起轩然大波,对于上线被板上钉钉为传销盘子的「项目」 ,Techub News 联系了 OKX 公关,但对方拒绝置评…...
GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
在现代软件开发中,CI/CD(持续集成与持续部署)已成为提高开发效率和代码质量的核心实践。GitLab CI/CD 提供了强大的功能,帮助开发者自动化构建、测试和部署应用程序。而 .gitlab-ci.yml 文件是 GitLab CI/CD 配置的关键所在&#…...
C语言第18节:自定义类型——联合和枚举
1. 联合体 C语言中的联合体(Union)是一种数据结构,它允许在同一内存位置存储不同类型的数据。不同于结构体(struct),结构体的成员各自占有独立的内存空间,而联合体的所有成员共享同一块内存区域…...
Python的元组和列表的区别是什么?
1. 定义和语法形式 列表(List):列表是一种可变的序列类型,使用方括号 [] 来定义。例如:my_list [1, 2, 3] 。列表中的元素可以是不同的数据类型,并且可以包含嵌套的列表、元组等其他数据结构。元组&#x…...
解锁网络安全:穿越数字世界的防护密码
个人主页:java之路-CSDN博客(期待您的关注) 目录 网络安全:数字时代的基石 网络安全面面观 (一)定义与范畴 (二)发展历程 网络安全面临的威胁 (一)恶意软件肆虐 (二…...
利用二分法+布尔盲注、时间盲注进行sql注入
一、布尔盲注: import requestsdef binary_search_character(url, query, index, low32, high127):while low < high:mid (low high 1) // 2payload f"1 AND ASCII(SUBSTRING(({query}),{index},1)) > {mid} -- "res {"id": payloa…...
GPT-SWARM和AgentVerse的拓扑结构和交互机制
GPT-SWARM和AgentVerse的拓扑结构和交互机制 拓扑结构区别 GPT-SWARM:采用图结构,将语言智能体系统描述为可优化的计算图。图中的每个节点代表一个操作,如语言模型推理或工具使用等特定功能,边则描述了操作之间的信息流,代表智能体之间的通信渠道。多个智能体连接形成的复…...
python爬虫解决无限debugger问题
方法一 关闭定时任务 关闭断点执行代码打开断点 # 无限debugger产生原因 # 1. web开发者工具打开 # 2. js代码中有debugger # 3. js有定时处理[推荐] for(let i0;i<99999;i){window.clearInterval(i)}方法二 关闭breakpoint 方法三 修改JS代码 使用fiddler,抓…...
使用rknn进行facenet部署
文章目录 开源仓库pth转onnxnetron可视化onnx转rknnC++实现开源仓库 https://github.com/bubbliiiing/facenet-pytorch pth转onnx 修改facenet网络的forward函数代码 修改前 def forward(self, x, mode = "predict"):if mode ==...
C# 两种方案实现调用 DeepSeek API
目录 序 开发运行环境 访问API的一个通用方法 原生官网实现 申请 API key 调用实现 调用示例 腾讯云知识引擎原子调用 申请 API key 调用示例 小结 序 DeepSeek(深度求索) 最近可谓火爆的一塌糊涂,具体的介绍这里不再赘述&#x…...
Linux下的进程切换与调度
目录 1.进程的优先级 优先级是什么 Linux下优先级的具体做法 优先级的调整为什么要受限 2.Linux下的进程切换 3.Linux下进程的调度 1.进程的优先级 我们在使用计算机的时候,通常会启动多个程序,这些程序最后都会变成进程,但是我们的硬…...
图神经网络是什么,有什么实际应用
图神经网络是什么 图神经网络(Graph Neural Network,GNN)是一种专门用于处理图结构数据的神经网络,它能对图中的节点、边和整个图进行学习和推理,在社交网络分析、生物信息学、推荐系统等领域应用广泛。以下是其原理及示例说明: 图神经网络原理 节点表示学习:为图中每…...
Debezium日常分享系列之:解码逻辑解码消息内容
Debezium日常分享系列之:解码逻辑解码消息内容 示例配置选项 DecodeLogicalDecodingMessageContent SMT将PostgreSQL逻辑解码消息的二进制内容转换为结构化形式。当Debezium PostgreSQL连接器捕获逻辑解码消息时,它会将消息事件记录发送到Kafka。默认情况…...
anolis os 8.9安装jenkins
一、系统版本 # cat /etc/anolis-release Anolis OS release 8.9 二、安装 # dnf install -y epel-release # wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo # rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.…...
java8、9新特性
JAVA8 Lambda 表达式 (parameters) -> expression 或 (parameters) ->{ statements; } 提供了一种更为简洁的语法,尤其适用于函数式接口。相比于传统的匿名内部类,Lambda 表达式使得代码更为紧凑,减少了样板代码的编写。 它允许将函…...
利用kali linux 进行自动化渗透测试
本方案旨在自动化创建渗透测试全流程 一、架构 1.智能信息收集体系 class IntelligentOSINT:def __init__(self, target):self.target targetself.intelligence_sources [OSINT_Platforms,DeepWeb_Crawlers, SocialMedia_Trackers,ML_Correlation_Engine]def advanced_col…...
Java基础知识总结(四十八)--TCP传输、TCP客户端、TCP服务端
**TCP传输:**两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流。该流中既有读取,也有写入。 **tcp的两个端点:**一个是客户端,一个是服务…...
【python】http.server内置库构建临时文件服务
需要从linux开发机上下载一个文件到本地,约700M比较大,通过sz命令下载较慢且传输过程不稳定连续失败,后采用下面方式解决。 cd到一个目录下执行python -m http.server port,port为服务的端口号: 启动后浏览器中访问…...
如何从0开始将vscode源码编译、运行、打包桌面APP
** 网上关于此的内容很少,今天第二次的完整运行了,按照下文的顺序走不会出什么问题。最重要的就是环境的安装,否则极其容易报错,请参考我的依赖版本以及文末附上的vscode官方指南 ** 第一步:克隆 VSCode 源码 首先…...
亚冬会绽放“云端”,联通云如何点亮冰城“科技之光”?
科技云报到原创。 35年前,中国第一次承办亚运会,宣传曲《亚洲雄风》红遍大江南北,其中有一句“我们亚洲,云也手握手”。如今回看,这句话仿佛有了更深的寓意:一朵朵科技铸就的“云”,把人和人连…...
网络安全ids是什么意思
1、 简述IPS和IDS的异同点; 入侵检测系统(IDS) IDS(Intrusion Detection Systems,入侵检测系统),专业上讲就是依照一定的安全策略,对网络、系统、运行状况进行监视,尽可能…...
