算法笔记1-高精度模板(加减乘除)个人模板

目录

加法

减法

乘法

​编辑

除法


加法

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath> 
#include <queue>using namespace std;typedef pair<int,int> PII;const int N = 1e5 + 10;int n;
int a[N],b[N],c[N];
bool st[10];void solve()
{string sa,sb;cin >> sa >> sb;int la = sa.size(),lb = sb.size();for(int i = la - 1,j = 1; i >= 0; i --, j ++){a[j] = sa[i] - '0';}for(int i = lb - 1, j = 1; i >= 0; i --, j ++){b[j] = sb[i] - '0';}int lc = max(la,lb);int st = 0;int k = 1;for(int i = 1; i <= lc; i ++, k ++){c[k] = a[i] + b[i] + st;if(c[k] >= 10){st = 1;c[k] = c[k] % 10;}else{st = 0;}}if(st){cout << st;}for(int i = k-1; i >= 1; i --){cout << c[i];}// cout << k;
}int main()
{solve();return 0;
}

 https://www.luogu.com.cn/problem/P1601

模板

 

#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int> &A, vector<int> &B)
{//为了方便计算,让A中保存较长的数字, B中保存较短的数字if (A.size() < B.size()) return add(B, A);//保存结果的数组vector<int> C;//进位,开始时是0int t = 0;//依次计算每一位for (int i = 0; i < A.size(); i ++ ){t += A[i];//加上 A 的第 i 位上的数字if (i < B.size()) t += B[i];//加上 B 的第 i 位上的数字C.push_back(t % 10); //C 中放入结果t /= 10;//t 更新成进位}//最后如果进位上有数,放进结果数组if (t) C.push_back(t);return C;//返回结果
}int main()
{string a, b;//以字符串形式保存输入的两个整数vector<int> A, B;//保存两个整数的数组cin >> a >> b;//接收输入for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');//倒序存储第一个数for (int i = b.size() - 1; i >= 0; i -- ) B.push_back(b[i] - '0');//倒序存储第二个数auto C = add(A, B);//调用加和函数for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];//倒序输出C中的数字cout << endl;return 0;
}

减法

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath> 
#include <queue>using namespace std;typedef pair<int,int> PII;const int N = 1e5 + 10;int n;
int a[N],b[N],c[N];
bool st[10];
string sa,sb;bool cmp(string x,string y)
{if(x.size() != y.size()) return x.size() > y.size();for(int i = 0; i < x.size(); i ++){if(x[i] > y[i]){return true;}else if(x[i] < y[i]){return false;}}return false;
}
void solve()
{string a1,b1;cin >> a1 >> b1;bool flag = false;if(cmp(a1,b1)){sa = a1;sb = b1;flag = true;}else{sa = b1,sb = a1;}int la = sa.size(),lb = sb.size();for(int i = la - 1,j = 1; i >= 0; i --, j ++){a[j] = sa[i] - '0';}for(int i = lb - 1, j = 1; i >= 0; i --, j ++){b[j] = sb[i] - '0';}int k = 1;int st = 0;for(int i = 1; i <= la; i ++,k ++){c[k] = a[i] - b[i] - st;if(c[k] < 0){c[k] = a[i] + 10 - b[i] - st;st = 1;}else st = 0;}while(1 && k){if(!c[k-1]) k --;else break;}if(!flag && k != 0) cout << "-";for(int i = k-1; i >= 1; i --){cout << c[i];}if(k == 0) cout << k;}int main()
{solve();return 0;
}

https://www.luogu.com.cn/record/159830019

乘法

//大数乘小数
#include<iostream>
#include<vector>using namespace std;vector<int> mul(vector<int>&A,int b)
{vector<int>C;int t=0;for(int i=0;i<A.size()||t;i++){if(i<A.size())t+=A[i]*b;C.push_back(t%10);t/=10;}return C;
}int main()
{string a;int b;cin>>a>>b;if(b == 0){ cout << 0; return 0;}vector<int>A;for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');auto C=mul(A,b);bool is_first = false;for(int i=C.size()-1;i>=0;i--){printf("%d",C[i]);}    return 0;}
//大数*大数
/*
#include <iostream>
#include <vector>using namespace std;vector<int> mul(vector<int> &A, vector<int> &B) {vector<int> C(A.size() + B.size() + 7, 0); // 初始化为 0,C的size可以大一点for (int i = 0; i < A.size(); i++)for (int j = 0; j < B.size(); j++)C[i + j] += A[i] * B[j];int t = 0;for (int i = 0; i < C.size(); i++) { // i = C.size() - 1时 t 一定小于 10t += C[i];C[i] = t % 10;t /= 10;}while (C.size() > 1 && C.back() == 0) C.pop_back(); // 必须要去前导 0,因为最高位很可能是 0return C;
}int main() {string a, b;cin >> a >> b; // a = "1222323", b = "2323423423"vector<int> A, B;for (int i = a.size() - 1; i >= 0; i--)A.push_back(a[i] - '0');for (int i = b.size() - 1; i >= 0; i--)B.push_back(b[i] - '0');auto C = mul(A, B);for (int i = C.size() - 1; i >= 0; i--)cout << C[i];return 0;
}
*/

 https://www.luogu.com.cn/problem/P1303

除法

#include <iostream>
#include <vector>
#include <algorithm>typedef long long ll;using namespace std;vector <ll> div(vector <ll> &A,ll b,ll &r){ // 取r的地址符,是为了更改r的值,方便后面输出余数vector <ll> C; // 答案r = 0; // 余数for(int i = A.size() - 1;i >= 0;i --){ // 从最高位开始处理r = r * 10 + A[i]; // 上一次的余数乘10,再加上当前位上的数,就是被除数C.push_back(r / b); // 往C里压入这个被除数除br %= b; // 计算余数}reverse(C.begin(),C.end()); // 因为除法运算中从高位开始计算,而前导0都在顶部而不是底部,所以要翻转过来while (C.size() > 1 && C.back() == 0) C.pop_back(); // 去除前导0return C; // 返回答案
}
int main(){string a;long long b;cin>>a>>b;vector <ll> A;for(int i = a.size() - 1;i >= 0;i --) A.push_back(a[i] - '0'); // 倒序ll r;auto C = div(A,b,r); // 答案for(int i = C.size() - 1;i >= 0;i --) cout<<C[i];return 0;
}

https://www.luogu.com.cn/problem/P1480

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

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

相关文章

ROS学习记录:C++节点发布自定义地图

前言 ROS栅格地图格式 在了解了ROS地图消息包的数据结构后(链接在上)&#xff0c;本文将编写一个节点&#xff0c;发布地图消息包&#xff0c;看看在RViz中显示是什么效果。 一、准备 1、为了简单起见&#xff0c;发布一个两行四列的地图 2、为了便于观测&#xff0c;只对地…

SmartEDA VS Multisim/Proteus:电子设计江湖,谁主沉浮?

在电子设计的江湖里&#xff0c;SmartEDA、Multisim和Proteus无疑是几大门派&#xff0c;各自拥有独特的武功秘籍和门派特色。今天&#xff0c;我们就来一场巅峰对决&#xff0c;看看这些电子设计软件究竟谁能笑傲江湖&#xff0c;成为电子设计界的霸主&#xff01; 一、门派起…

Seq2seq、编码器解码器神经网络

目录 一、Seq2seq 简介二、编码器三、解码器四、编码器-解码器的训练 遇到看不明白的地方&#xff0c;欢迎在评论中留言呐&#xff0c;一起讨论&#xff0c;一起进步&#xff01; 需掌握的前提知识&#xff1a; LSTM、词嵌入 本文参考&#xff1a;【官方双语】编码、解码神经网…

tkinter菜单栏

tkinter菜单栏 菜单栏效果代码 菜单栏 在 Tkinter 中&#xff0c;Menu 组件用于创建菜单栏、下拉菜单和上下文菜单&#xff0c;是构建图形用户界面&#xff08;GUI&#xff09;应用程序的常见需求。 效果 代码 import tkinter as tk from tkinter import messagebox# 创建主…

DAMA学习笔记(一)-数据管理

1.引言 数据管理(Data Management) 是为了 交付、 控制、 保护 并 提升 数据和信息资产的 价值 , 在其整个生命周期中制订 计划、 制度、 规程和实践 活动, 并 执行 和 监督 的过程。 数据管理专业人员(Data Management Professional) 是指 从事数据管理各方面的工作…

MySQL与PostgreSQL关键对比三(索引类型)

目录 索引类型 B-tree 索引 Hash 索引 Full-text 索引 GiST 索引 GIN 索引 BRIN 索引 索引创建示例 MySQL PostgreSQL 结论 以下SQL语句的执行如果需要开发工具支持&#xff0c;可以尝试使用SQLynx或Navicat来执行。 MySQL和PostgreSQL在索引方面有许多相似之处&am…

【C#线程设计】2:backgroundWorker

实现&#xff1a; &#xff08;1&#xff09;.控件&#xff1a;group Box&#xff0c;text Box&#xff0c;check Box&#xff0c;label&#xff0c;botton&#xff0c;richtextbox 控件拉取见&#xff1a;https://blog.csdn.net/m0_74749240/article/details/139409510?spm1…

吴恩达2022机器学习专项课程C2W3:2.25 理解方差和偏差(诊断方差偏差正则化偏差方案)

目录 引言名词替代影响模型偏差和方差的因素1.多项式阶数2.正则化参数 判断是否有高偏差或高方差1.方法一&#xff1a;建立性能基准水平2.方法二&#xff1a;建立学习曲线 总结 引言 机器学习系统开发的典型流程是从一个想法开始&#xff0c;然后训练模型。初次训练的结果通常…

C语言最终讲:预处理详解

C语言最终讲&#xff1a;预处理详解 1.预定义符号2.#define定义常量3.#define定义宏4.带有副作用的宏参数5.宏替换的规则6.宏和函数的对比6.1宏的优势6.1.1\符号 6.2宏的劣势 7.#和##7.1#运算符7.2##运算符 8.命名约定9.#undef10.命令行定义11.条件编译12.头文件的包含12.1本地…

13. UDP协议与RTP协议

UDP协议 UDP协议比较简单&#xff1a; UDP的长度是固定的&#xff0c;用总长度-UDP长度就是数据长度。 UDP是不保证他的有序性和可靠性的。对于音频和视频是这样是比较好的&#xff0c;因为这段丢了&#xff0c;我们可以从下一段在开始解码。 RTP RTP 协议概述 RTP&#x…

【MySQL】(基础篇六) —— 过滤数据

过滤数据 本文将讲授如何使用SELECT语句的WHERE子句指定搜索条件。 WHERE子句 数据库表一般包含大量的数据&#xff0c;很少需要检索表中所有行。通常只会根据特定操作或需要提取表数据的子集。只检索所需数据需要指定搜索条件&#xff08;search criteria&#xff09;&…

代码随想录算法训练营第36期DAY56

DAY56 套磁很顺利&#xff0c;发现又有书读了&#xff01; 300最长递增子序列 朴素法&#xff0c;这个好想&#xff0c;但是不对&#xff0c;比如 0 1 0 3 2 3 我的算法会找出0 1 3作为答案&#xff0c;而不是0 1 2 3 可以看出&#xff0c;后面的状态依赖于前面的状态&am…

Facebook革新:数字社交的下一个阶段

在数字化时代&#xff0c;社交网络已经成为人们生活中不可或缺的一部分。作为全球最大的社交网络平台之一&#xff0c;Facebook一直在不断创新&#xff0c;引领着数字社交的发展。然而&#xff0c;随着科技的不断进步和社交需求的变化&#xff0c;Facebook正在走向一个新的阶段…

Gitte的使用(Windows/Linux)

Gitte的使用&#xff08;Windows/Linux&#xff09; 一、Windows上使用Gitte1.下载程序2.在Gitte上创建远程仓库3.连接远程仓库4.推送文件到远程仓库 二、Linux上使用Gitte1.第一次从仓库上传1.1生成公钥1.2配置SSH公钥1.3新建一个仓库1.4配置用户名和邮箱在Linux中1.5创建仓库…

python字典应用

""" 字典应用 字典中保存了股票信息&#xff0c;完成下面的操作 1.找出股票价格大于100元的股票并创建一个新的字典 2、找出价格最高和最低的股票对应的股票代码 3.按照股票价格从高到低给股票代码排序 """stocks {AAPL: 191.88,G00G: 1186.96,…

强烈推荐 Setapp 上的 Mac 优质软件

Setapp 一款专为 macOS 设计的软件订阅平台&#xff0c;目前提供高达 240 款精心筛选的高品质应用程序&#xff0c;只需每月 9.9 美元的订阅费&#xff0c;即可畅享所有正版软件的使用权。让使用者无忧享受正版软件的稳定性和安全性&#xff0c;彻底告别盗版软件可能引发的风险…

【C++11】常见的c++11新特性(一)

文章目录 1. C11 简介2. 常见的c11特性3.统一的列表初始化3.1initializer_list 4. decltype与auto4.1decltype与auto的区别 5.nullptr6.右值引用和移动语义6.1左值和右值6.1.1左值的特点6.1.2右值的特点6.1.3右值的进一步分类 6.2左值引用和右值引用以及区别6.2.1左值引用6.2.2…

ELK组件

资源列表 操作系统 IP 主机名 Centos7 192.168.10.51 node1 Centos7 192.168.10.52 node2 部署ELK日志分析系统 时间同步 chronyc sources -v 添加hosts解析 cat >> /etc/hosts << EOF 192.168.10.51 node1 192.168.10.52 node2 EOF 部署Elasticsea…

开源VisualFreebasic中文版,vb7 IDE,VB6升级64位跨平台开发安卓APP,Linux程序

吴涛老矣&#xff0c;社区苦无64位易语言&#xff0c;用注入DLL增强菜单&#xff0c;做成VS一样的界面 终归是治标不治本&#xff0c;一来会报毒&#xff0c;二来闭源20年没更新了 开源的VB7&#xff0c;欢迎易语言的铁粉进群&#xff1a;1032313876 【Freebasic编程语言】编绎…

【设计模式深度剖析】【4】【行为型】【策略模式】

&#x1f448;️上一篇:职责链模式 设计模式-专栏&#x1f448;️ 文章目录 策略模式定义英文原话直译 角色类图策略接口Strategy&#xff1a;具体策略类上下文类Context测试类 策略模式的应用策略模式的优点策略模式的缺点策略模式的使用场景 策略模式 策略模式&#xff08…