高精度计算,实际上就是模拟竖式计算,代码如下,请慢慢消化,如有不足或建议,请在评论区留言
#include <bits/stdc++.h>
using namespace std;
int a[1001],k,c[1001];
void init(int a[])
{
string s;
cin>>s;
a[0]=s.length();
for(int i=1 ;i<=a[0]; i++)
{
a[i]=s[a[0]-i]-'0';
}
}
void print(int a[])
{
for(int i=a[0]; i>=1; i--)
{
cout<<a[i];
}
}
void divide(int a[],int k)
{
memset(c,0,sizeof(c));
int r=0;
for(int i=a[0]; i>=1; i--)
{
c[i]=a[i]+r*10;
r=c[i]%k;
c[i]/=k;
}
int len=a[0];
while(c[len]==0 && len!=1)
{
len--;
}
c[0]=len;
}
int main()
{
init(a);
cin>>k;
divide(a,k);
print(c);
return 0;
}