C++高精度乘除模板
注意点:
1.字符串存入到数组中,别忘了-‘0’。
2.注意进位,借位。
3.乘法是从低位开始,而除法是从高位开始。
4.输出若不为0时,第一个0不输出。
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
typedef long long ll;
const int N=10010;
int a[N],e[N],f[N];
void mut(int a[],int b,int n)
{
int t=0;
for(int i=0;i<=n;i++)
{
e[i]=a[i]*b+t;
t=e[i]/10;
e[i]=e[i]%10;
}
int i=n;
while(e[i]==0) i--;
while(i>=0) cout<<e[i--];
}
void div(int a[],int b,int n)
{
int t=0;
for(int i=n-1;i>=0;i--)
{
t=10*t+a[i];
f[i]=t/b;
t=t%b;
/*f[i]=(a[i]+t)/b;
t=10*((a[i]+t)%b);*/
}
int i=n-1;
while(f[i]==0) i--;
while(i>=0) cout<<f[i--];
}
int main()
{
string q;
int b;
cin>>q>>b;
for(int i=0;i<q.length();i++)
{
a[i]=q[q.length()-1-i]-'0';
}
mut(a,b,q.length());
cout<<endl;
div(a,b,q.length());
}