高精度板子
本章即将介绍的是一章高精度的板子,并没有深奥的道理,大函数大 inline 者,暂且靠边站,笔者没有那么高水平,满足不了这些需求。本文如有理念上与逻辑上的错误,请多多包涵并且指出。
Part-1
什么是高精度?
高精度,虽然听起来感觉很生熟,很深奥,但是,原理不过是小学二三年级时的加减法竖式和四五年级的乘法算式罢了,也就是说,你如果将高精度的具体过程列出来,其实,就是一张你小学时的竖式,怎么样,并不是很难吧
高精度问题怎么做?
当然,上述讲过了,高精度还有 inline ,但我们暂且不提,以后会有一张专门讲进阶的。当然,简单的高精度算法,其实用 Excel 表格已经完美诠释
举个例子,如下,我们用32和99来做高精度的加、减、乘、除的过程:
上图为减法的过程;
上图为加法的过程;
上图为乘法过程;
除法过程其实跟乘法什么的没什么区别,这里偷一下懒,懒得写了 QAQ
Part-2
高精度加法的代码
代码上都有注释,应该没什么阅读上的障碍吧(
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int a[1005], b[1005], c[1005];
int lens1, lens2, len;
void add(int a[], int b[]) {
//计算
memset(c, 0, sizeof(c));//必须要初始化,不然就会有随机数
len = lens1 > lens2 ? lens1 : lens2;
int g = 0;//g是进位
for (int i = 1; i <= len; i++) {
c[i] = a[i] + b[i] + g;
g = c[i] / 10;
c[i] %= 10;
}
if (g != 0) c[++len] = g;
c[0] = len;
for (int i = len; i >= 1; i--) cout << c[i];
}
int main() {
//string s1, s2;
string s1;
cin >> s1;
lens1 = s1.size();
for (int i = 0; i < lens1; i++) {
//按照反着的顺序,输入
a[lens1 - i] = s1[i] - '0';
}
string s2;
cin >> s2;
lens2 = s2.size();
for (int i = 0; i < lens2; i++) {
//按照反着的顺序,输入
b[lens2 - i] = s2[i] - '0';
}
add(a, b);
cout << endl;
return 0;
}
高精减
同加法(同理不说了)
高精乘
#include<iostream>
using namespace std;
int a[2000];
int b[2000];
int c[2000];
int sum[2000];
void pplus(int *a,int *c)
{
int jw=0;
for(int i=1;i<=1000;i++)
{
c[i]+=a[i]+jw;
jw=c[i]/10;
c[i]%=10;
}
}
void cheng(int *a,int c)
{
int jw=0;
for(int i=1;i<=1000;i++)
{
a[i]=a[i]*c+jw;
jw=a[i]/10;
a[i]%=10;
}
}
int main()
{
int n;
cin>>n;
a[1]=1;
for(int i=1;i<=n;i++)
{
cheng(a,i);
pplus(a,c);
}
bool flag=0;
for(int i=1000;i>=1;i--)
{
if(c[i]!=0) flag=1;
if(flag) cout<<c[i];
}
}
高精度除
唉,打数组打得那么累了,直接来一个快读快输吧 qwq
char c=getchar();
while (c>='0' && c<='9')
{
len++;
a[len]=(c-'0');
c=getchar();
}
核心代码
其他没什么区别 qwq
感谢观看,期待下次的再见
本文作者:zsdqwq
本文链接:https://www.cnblogs.com/wo-de-bo-ke-wo-zuo-zhu/p/15827987.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步