<学习笔记> 高精度 + - *
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<algorithm> 5 #include<cmath> 6 using namespace std; 7 8 int la,lb,lc,f=0; 9 int a[510],b[510],c[510]; 10 char A[510],B[510]; 11 12 bool Max(char C[],char D[]) 13 { 14 la=strlen(C),lb=strlen(D); 15 if(la>lb) return true; 16 if(lb>la) return false; 17 for(int i=0;i<=la;++i) 18 if(C[i]>D[i]) return true; 19 else return false; 20 } 21 void Add() 22 { 23 la=strlen(A),lb=strlen(B); 24 lc=max(la,lb); 25 for(int i=1;i<=la;++i) a[i]=A[la-i]-'0'; 26 for(int i=1;i<=lb;++i) b[i]=B[lb-i]-'0'; 27 for(int i=1;i<=lc;++i) 28 { 29 c[i]+=a[i]+b[i]; 30 if(c[i]/10) 31 { 32 c[i]%=10; 33 ++c[i+1]; 34 } 35 } 36 if(c[lc+1]) ++lc; 37 } 38 void Minus(char C[],char D[]) // 大减小 39 { 40 la=strlen(C),lb=strlen(D); 41 lc=max(la,lb); 42 for(int i=1;i<=la;++i) a[i]=C[la-i]-'0'; 43 for(int i=1;i<=lb;++i) b[i]=D[lb-i]-'0'; 44 for(int i=1;i<=lc;++i) 45 { 46 c[i]+=a[i]-b[i]; 47 if(c[i]<0) 48 { 49 c[i]+=10; 50 --c[i+1]; 51 } 52 } 53 if(!c[lc]) --lc; 54 } 55 void Multiply() 56 { 57 la=strlen(A),lb=strlen(B); 58 lc=la+lb-1; 59 for(int i=1;i<=la;++i) a[i]=A[la-i]-'0'; 60 for(int i=1;i<=lb;++i) b[i]=B[lb-i]-'0'; 61 for(int i=1;i<=la;++i) 62 for(int j=1;j<=lb;++j) 63 { 64 c[i+j-1]+=a[i]*b[j]; 65 if(c[i+j-1]/10) 66 { 67 c[i+j]+=c[i+j-1]/10; 68 c[i+j-1]%=10; 69 } 70 } 71 if(c[lc+1]) ++lc; 72 } 73 74 int main() 75 { 76 scanf("%s%s",A,B); 77 return 0; 78 }