高精度
使用数组/字符串存储
倒着存
#include<bits/stdc++.h>
using namespace std;
struct bg{
int len;
int num[10010];
bg(){
len=1;
memset(num,0,sizeof(num));
}
void init(string s){
len=s.size();
for(int i=0;i<len;i++){
num[i]=s[len-1-i]-'0';
}
}
};
//加法运算
bg add(bg a,bg b){
bg c;
c.len=max(a.len,b.len);
for(int i=0;i<c.len;i++){
c.num[i]+=a.num[i]+b.num[i];
c.num[i+1]+=c.num[i]/10;
c.num[i]%=10;
}
if(c.num[c.len]) c.len++;
return c;
}
//乘法运算
bg cheng(bg a,bg b){
bg c;
c.len=a.len+b.len+1;
for(int i=0;i<a.len;i++){
for(int j=0;j<b.len;j++){
c.num[i+j]+=a.num[i]*b.num[j];
c.num[i+j+1]+=c.num[i+j]/10;
c.num[i+j]%=10;
}
}
while(c.len>1&&c.num[c.len-1]==0) c.len--;
return c;
}
bg chu(bg a,int b){
bg c;
c.len=a.len;
int rest=0;
for(int i=a.len-1;i>=0;i--){
rest=rest*10+a.num[i];
c.num[i]=rest/b;
rest%=b;
}
while(c.len>1&&c.num[c.len-1]==0) c.len--;
return c;
}
int main(){
int b;
string s1,s2;cin>>s1>>b;
bg a;
a.init(s1);
bg c=chu(a,b);
for(int i=c.len-1;i>=0;i--){
cout<<c.num[i];
}
return 0;
}