高精度模板Bigint Killer
阿新 • • 發佈:2017-05-24
add -- return -i algo sizeof 高精度 bsp while
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 using namespace std; 5 void r(int *a) 6 { 7 string b;cin>>b; 8 int l=b.length(); 9 for (int i=1;i<=l;i++) a[i]=b[l-i]-‘0‘; 10 a[0]=l; 11 } 12 void w(int *a) {for (int i=a[0];i>=1;i--) cout<<a[i];cout<<endl;}13 void cls(int *a) {memset(a,0,sizeof(int)*(a[0]+1));} 14 void cpy(int *a,int *b) {memcpy(b,a,sizeof(int)*(a[0]+1));} 15 bool cmp(int *a,int *b) {for (int i=0;i<=a[0];i++) if (a[i]!=b[i]) return a[i]>b[i];} 16 void add(int *a,int *b,int *c) 17 { 18 cls(c);int l=1; 19 while (l<=a[0]||l<=b[0]) { 20 c[l+1]=(c[l]+=a[l]+b[l])/10; 21 c[l++]%=10; 22 } 23 if (!c[l]) l--;c[0]=l; 24 } 25 void mul(int *a,int *b,int *c) 26 { 27 cls(c);int la=a[0],lb=b[0],l=la+lb; 28 for (int i=1;i<=la;i++) for (int j=1;j<=lb;j++) { 29 c[i+j]+=(c[i+j-1]+=a[i]*b[j])/10; 30 c[i+j-1]%=10; 31 } 32 while (c[l]==0&&l>1) l--;c[0]=l; 33 } 34 void dmul(int *a,int b,int *c) 35 { 36 cls(c);int l=1; 37 while (l<=a[0]||c[l]) { 38 c[l+1]=(c[l]+=a[l]*b)/10; 39 c[l++]%=10; 40 } 41 while (c[l]==0&&l>1) l--;c[0]=l; 42 } 43 void ddiv(int *a,int b,int *c) 44 { 45 cls(c);int l=a[0]; 46 for (int i=l;i>=1;i--) { 47 c[i-1]=(c[i]+=a[i])%b*10; 48 c[i]/=b; 49 } 50 while (c[l]==0&&l>1) l--;c[0]=l; 51 }
高精度模板Bigint Killer