高精度
高精加
void jia(int a[],int b[]){ c[0]=1;int d=0; while(c[0]<=a[0]||c[0]<=b[0]){ //cout<<c[c[0]]<<endl; c[c[0]]=a[c[0]]+b[c[0]]+d; d=c[c[0]]/10;c[c[0]]%=10;c[0]++; }if(d)c[c[0]]=d; else c[0]--; for(int i=0;i<=c[0];++i) a[i]=c[i]; }
高精减
void jian(int a[],int b[]){ d[0]=1; while(d[0]<=a[0]||d[0]<=b[0]){ if(a[d[0]]<b[d[0]]){ a[d[0]]+=10; a[d[0]+1]--; }d[d[0]]=a[d[0]]-b[d[0]]; d[0]++; }d[0]--; while(d[0]>1&&!d[d[0]]) d[0]--; }
高精乘
高精乘低精
a*=b;
void mul(int a[],int b){ int c=0; for(int i=1;i<=a[0];i++){ a[i]=a[i]*b+c; c=a[i]/10;a[i]%=10; } while(c!=0){ a[++a[0]]=c;c=a[a[0]]/10; a[a[0]]%=10; } }
c=a*b
void mul(int x[],int y){ memset(c,0,sizeof(c)); for(int i=1;i<=x[0];++i){ int k=i; c[i]+=x[i]*y; while(c[k]>=10){ c[k+1]+=c[k]/10; c[k++]%=10; }if(k>c[0]) c[0]=k; }while(!c[c[0]]&&c[0]>1) --c[0]; for(int i=0;i<=c[0];++i) a[i]=c[i]; }
高精乘高精

void cheng(int a[],int b[]){ memset(e,0,sizeof(e)); for(int i=1;i<=a[0];i++){ int d=0; for(int j=1;j<=b[0];j++){ e[i+j-1]+=a[i]*b[j]+d; d=e[i+j-1]/10;e[i+j-1]%=10; }e[i+b[0]]=d; }e[0]=a[0]+b[0]; while(e[0]>1&&!e[e[0]]) e[0]--; }
高精除
保留被除数
inline bool greater_eq(int a[], int b[], int last_dg, int len) { if (a[last_dg + len] != 0) return true; for (int i = len - 1; i >= 0; --i) { if (a[last_dg + i] > b[i]) return true; if (a[last_dg + i] < b[i]) return false; } return true; }
void div(int a[],int b[],int d[]){
for(int i=0; i<=a[0];++i) d[i]=a[i];
for(int i=a[0]-b[0]+1;i>0;--i)
while(greater_eq(d,b,i,b[0]))
for (int j=1;j<=b[0];++j){
d[i+j]-=b[j];
if(d[i+j]<0)d[i+j+1]-=1,d[i+j]+=10;
}
while(d[0]>0&&d[d[0]]==0) d[0]--;
}
不保留

void J(int a[],int b[]){ if(!C(a,b)){a[0]=0;return;} for(int i=1;i<=a[0];++i){ if(a[i]<b[i]){a[i+1]--;a[i]+=10;} a[i]-=b[i]; }while(a[0]>0&&!a[a[0]]) a[0]--; } int C(int a[],itn b[]){ if(a[0]>b[0]) return 1; if(a[0]<b[0]) return -1; for(int i=a[0];i;--i){ if(a[i]>b[i]) return 1; if(a[i]<b[i]) return -1; }return 0; } void B(int a[],int b[],int d){ for(int i=1;i<=a[0];++i) b[i+d-1]=a[i]; b[0]=a[0]+d-1; } int main(){ c[0]=a[0]-b[0]+1; for(int i=c[0];i;--i){ int t[220]; B(y,t,i); while(C(a,t)>=0) c[i]++,J(a,t); }while(c[0]>0&&!c[c[0]]) c[0]--; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律