1 void jia(ll *a,ll *b) //加法 2 { 3 tmp[0]=max(a[0],b[0]); 4 tx=0; 5 for(ll i=1;i<=tmp[0]+3;++i) tmp[i]=0; 6 for(ll i=1;i<=tmp[0];++i) 7 { 8 tmp[i]=(tx+a[i]+b[i])%10; 9 tx=(tx+a[i]+b[i])/10; 10 } 11 if(tx) 12 { 13 tmp[0]++; 14 tmp[tmp[0]]=tx; 15 } 16 while(tmp[tmp[0]]==0&&tmp[0]>1) tmp[0]--; 17 for(int i=0;i<=tmp[0];++i) a[i]=tmp[i]; 18 } 19 void jian(ll *a,ll *b)//减法 20 { 21 tmp[0]=max(a[0],b[0]); 22 tx=0; 23 for(ll i=1;i<=tmp[0]+3;++i) tmp[i]=0; 24 for(ll i=1;i<=tmp[0];++i) 25 { 26 tmp[i]=a[i]-b[i]+tx; 27 if(tmp[i]<0) 28 { 29 tmp[i]+=10;tx=-1; 30 }else tx=0; 31 } 32 while(tmp[tmp[0]]==0&&tmp[0]>1) tmp[0]--; 33 for(int i=0;i<=tmp[0];++i) a[i]=tmp[i]; 34 }
此为倒序:
例子:in:120098
a:123456
890021
1 void chu(ll *a,ll *p,ll u)//a[]/u 2 { 3 g[0]=a[0];tx=0; 4 for(ll i=1;i<=g[0]+3;++i) g[i]=0; 5 for(int i=g[0];i>=1;--i) 6 { 7 tx=tx*10+a[i]; 8 g[i]=tx/u; 9 tx%=u; 10 } 11 while(g[g[0]]==0&&g[0]>1) g[0]--; 12 for(ll i=0;i<=g[0];++i) a[i]=g[i]; 13 }