算法笔记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;只对地…

机器学习:如何在Python中实现决策树分类?

如何在Python中实现决策树分类&#xff1f; 在机器学习领域&#xff0c;决策树算法是一种常用且高效的分类与回归方法。它不仅易于理解和解释&#xff0c;还能处理数值型和分类型数据。本文将带你深入探索Python中的决策树算法&#xff0c;理解其基本原理&#xff0c;并通过代…

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

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

Linux:通过线程互斥同步实现基于BlockingQueue的生产消费者模型

一、总体调度&#xff1a;主函数Main.cc #include "BlockQueue.hpp" #include "Thread.hpp" #include <string> #include <vector> #include <functional> #include <unistd.h> #include <ctime>using namespace ThreadMod…

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

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

PasteCluster组件介绍(一款让你的.Net服务快速支持集群部署的中间件)

前言 PasteCluster是由.NET6.0编写的集群中间件&#xff0c;先已开源: PasteCluster.Gitee 在实际开发中&#xff0c;如果一个服务(比如api)是否支持集群部署&#xff0c;其实是由开发决定的&#xff01; 举个栗子 我们知道缓存&#xff0c;可以分几种方式&#xff0c;最简单的…

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…

mingw如何制作动态库附python调用

1.mingw和msvc g -fpic HelloWorld.cpp -shared -o test.dllg -L . -ltest .\test.cpp 注意-L后面的.挨不挨着都行&#xff0c;-l不需要-ltest.dll&#xff0c;只需要-ltest 2.dll.cpp extern "C" {__declspec(dllexport) int __stdcall add(int a, int b) {return…

吴恩达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;&…

独孤思维:做副业,万物皆可成为素材

01 分享一个独孤日更的素材来源。 很多小伙伴&#xff0c;刚开始写自媒体&#xff0c;都喜欢一本正经的阅读书籍&#xff0c;文章。 把素材来源&#xff0c;灵感来源&#xff0c;全部押注在这个地方。 其实万物皆可成为素材。 比如昨天早上&#xff0c;独孤参加公司的会议…

代码随想录算法训练营第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…

zero shot,few shot以及无监督学习之间的关系是什么

Zero-shot learning、few-shot learning和无监督学习都是机器学习中的方法&#xff0c;它们共同的特点是在有限或没有标签数据的情况下进行学习。下面是这三种方法之间的关系和区别&#xff1a; Zero-shot Learning (零样本学习)&#xff1a; 零样本学习是在模型训练过程中完全…

中介子方程十

X$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpX$XyXtXkXrXiXαX$XiXαXyXEX$XFX$XEXyXαXiX$XαXiXrXkXtXyX$XpX$XyXtXkXrXiXαX$XiXαXyXEX$XαXηXtXαX$XWXyX$XyXWX$XpXαXqXηX$XeXαXhX$XdX$XpX$XdX$XyXeXαX$XEXyXαXiX$XαXiXrXkXtXyX$XpX$XyXtXkXrXiXαX$XiXαXyXEX$XαXeXyX$Xd…

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

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