c++高精度减法
我们都知道,c++中每一种类型的变量都有自己的大小。最大的是long long类型,它的取值是9223372036854775807 ~ -9223372036854775807。但是在很多时候,我需要用到更大的数,这时我们就要使用新的东西——高精度。
因为数据太大,我们需要用到字符串输入。
#include<iostream>
#include<cstring>
using namespace std;
int j,len1,len2,s,jie[99999999];
char ji1[99999999],ji2[99999999],jia1[99999999],jia2[99999999];
bool d=true;
int main()
{
cin>>ji1>>ji2;
len1=strlen(ji1);
len2=strlen(ji2);
s=max(len1,len2);
for(int i=len1-1;i>=0;i--)
{
jia1[i]=ji1[j];
j++;
}
j=0;
for(int i=len2-1;i>=0;i--)
{
jia2[i]=ji2[j];
j++;
}
for(int i=0;i<s;i++)
{
if(jia1[i]>=jia2[i])
{
if(jia2[i]==0)
{
jie[i]=int(jia1[i]);
jie[i]-=48;
}
if(jia2[i]!=0)
{
jie[i]=int(jia1[i])-int(jia2[i]);
}
}
if(jia1[i]<jia2[i])
{
jia1[i+1]--;
jie[i]=10+int(jia1[i])-int(jia2[i]);
}
}
for(int i=s-1;i>=0;i--)
{
if(jie[i]!=0) d=false;
if(jie[i]==0&&d==true) d=true;
if(d==false)
cout<<jie[i];
}
return 0;
}