前言
今天主要学习了有关高精度相关的模版,包括了加减乘除这四个运算。下面是四种运算的例题和具体代码。
一、高精度加法
1.题目描述
2.具体代码
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#include<queue>
using namespace std;
string ans,a,b;
int read()
{
int x=0;
char c=getchar();
while (c<'0'||c>'9')
{
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+c-'0';
c=getchar();
}
return x;
}
//高精度加法
string add(string str1,string str2)
{
string str;
int len1=str1.size();
int len2=str2.size();
if(len1<len2)
{
for(int i=1;i<=len2-len1;i++)
{
str1='0'+str1;
}
}
else
{
for(int i=1;i<=len1-len2;i++)
{
str2='0'+str2;
}
}
len1=str1.size();
int temp=0,cf=0;
for(int i=len1-1;i>=0;i--)
{
temp=str1[i]-'0'+str2[i]-'0'+cf;
cf=temp/10;
temp%=10;
str=char(temp+'0')+str;
}
if(cf!=0)
{
str=char(cf+'0')+str;
}
return str;
}
int main()
{
cin>>a>>b;
ans=add(a,b);
cout<<ans<<endl;
return 0;
}
二、高精度减法
1.题目描述
2.具体代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
string a,b,ans;
int read()
{
int x=0;
char c=getchar();
while(c<'0'||c>'9')
{
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<3)+(x<<1)+c-'0';
c=getchar();
}
return x;
}
//compare比较函数:相等返回0,大于返回1,小于返回-1
int compare(string str1,string str2)
{
if(str1.size()>str2.size())
{
return 1;
}
else if(str1.size()<str2.size())
{
return