高精度常用操作
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 }?
轉(zhuǎn)載于:https://www.cnblogs.com/adelalove/p/9864982.html
總結(jié)
- 上一篇: 剧集更新表
- 下一篇: ubuntu18.04 mariadb