<学习笔记> 高精度 + - *

 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 }

 

posted @ 2017-11-09 09:18  loi_maple  阅读(129)  评论(0编辑  收藏  举报