#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
string add(string sa,string sb);
string sub(string sa,string sb);
string mul(string sa,string sb);
string div(string sa,int b);
int main()
{
//string a,b;
string a;
int b;
cin>>a>>b;
//cout<<add(a,b);
//cout<<sub(a,b);
//cout<<mul(a,b);
cout<<div(a,b);
return 0;
}
string add(string sa,string sb)
{
int a[N],b[N];
string c;
int la=sa.size(),lb=sb.size();
for(int i=0;i<la;i++)a[i]=sa[la-1-i]-'0';
for(int i=0;i<lb;i++)b[i]=sb[lb-1-i]-'0';
int maxn=max(la,lb)+1;
for(int i=0;i<maxn;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
while(maxn>=1&&a[maxn]==0)maxn--;
for(int i=maxn;i>=0;i--)c+=a[i]+'0';
return c;
}
bool cmp(string a,string b)
{
int la=a.size(),lb=b.size();
if(la>lb)return 0;
if(la<lb)return 1;
for(int i=0;i<la;i++)
{
if(a[i]!=b[i])
return a[i]<b[i];
}
return 0;
}
string sub(string sa,string sb)
{
int a[N],b[N];
string ans;
if(cmp(sa,sb))
{
swap(sa,sb);
ans+='-';
}
int la=sa.size(),lb=sb.size();
for(int i=0;i<la;i++)a[i]=sa[la-i-1]-'0';
for(int i=0;i<lb;i++)b[i]=sb[lb-i-1]-'0';
int lc=max(la,lb);
for(int i=0;i<lc;i++)
{
if(a[i]<b[i])
{
a[i]+=10;
a[i+1]--;
}
a[i]-=b[i];
}
while(lc>=1&&a[lc]==0)lc--;
for(int i=lc;i>=0;i--)ans+=a[i]+'0';
return ans;
}
string mul(string sa,string sb)
{
string ans;
int a[N],b[N],c[N],la=sa.size(),lb=sb.size();
for(int i=0;i<la;i++)a[i]=sa[la-1-i]-'0';
for(int i=0;i<lb;i++)b[i]=sb[lb-i-1]-'0';
for(int i=0;i<la;i++)
for(int j=0;j<lb;j++)
c[i+j]+=a[i]*b[j];
for(int i=0;i<la+lb;i++)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
int lc=la+lb;
while(lc>=1&&c[lc]==0)lc--;
for(int i=lc;i>=0;i--)
ans+=c[i]+'0';
return ans;
}
string div(string sa,int b)
{
if(b==0)return "error";
if(sa=="0")return "0";
int a[N],la=sa.size(),x=0,c[N];
string ans;
for(int i=0;i<la;i++)a[i]=sa[i]-'0';
for(int i=0;i<la;i++)
{
c[i]=(x*10+a[i])/b;
x=(x*10+a[i])%b;
}
int lc=0;
while(lc<la&&c[lc]==0)lc++;
for(int i=lc;i<la;i++)ans+=c[i]+'0';
return ans;
}
高精度模板
最新推荐文章于 2024-05-17 13:49:29 发布
本文介绍了一个C++程序,包含四个字符串操作函数:add、sub、mul和div,分别实现字符串的加法、减法、乘法和整数除法,并通过cmp函数进行字符串大小比较。这些函数在处理字符串算术运算和字符数组操作上有实用价值。
摘要由CSDN通过智能技术生成