今天讲高精度(^_^)
1.每一部分讲解
高精度计算其实就是在long long不够的时候做的一种算法,这里就不赘述了,在处理时有这几个问题:
(1)输入(字符串):
string s;
int a[200];
cin>>s;
int n=s.size();
for(int i=1;i<=n;i++)
{
a[i]=s[n-i]-'0';
}
(2)进位,借位:
//加
z[i]=x[i]+y[i];
if(z[i]>=10)
{
z[i]%=10;
++z[i+1];
}
//减
if(a[i]<b[i])
{
--a[i+1];
a[i]+=10;
}
c[i]=a[i]-b[i];
//乘
c[i+j-1]=a[i]*b[j]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
2.代码
(本代码借鉴了一本通,在此鸣谢)
高精度加法:
#include<bits/stdc++.h>
using namespace std;
int main()
{
char a1[100],b1[100];
int a[100],b[100],c[100];
int lena,lenb,lenc,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
cin>>a1;
cin>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for(int i=0;i<=lena-1;i++)
a[lena-i]=a1[i]-48;
for(int i=0;i<=lenb-1;i++