高精度加法
Posted 1129-tangqiyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度加法相关的知识,希望对你有一定的参考价值。
1 #include <cstring> 2 #include <cstdio> 3 #include <iostream> 4 #include <climits> 5 using namespace std; 6 void swap(int &a,int &b) 7 { 8 int t=a; 9 a=b; 10 b=t; 11 } 12 int main() 13 { 14 char A[100],B[100]; 15 cin>>A>>B; 16 int lena=strlen(A),lenb=strlen(B); 17 for(int i = 0,j=lena-1;i<j;++i,--j) 18 { 19 swap(A[i],A[j]); 20 } 21 for(int i = 0,j=lenb-1;i<j;++i,--j) 22 { 23 swap(B[i],B[j]); 24 } 25 for(int i=0;i<lena;++i) A[i]-=‘0‘; 26 for(int i=0;i<lenb;++i) B[i]-=‘0‘; 27 28 int C[100],c=0; 29 30 int i = 0 ,j=0,k=0; 31 while(i<lena && j<lenb) 32 { 33 C[k]=A[i]+B[j]+c; 34 c=C[k]/10; 35 C[k]%=10; 36 ++i; 37 ++j; 38 ++k; 39 } 40 while(i<lena ) 41 { 42 C[k]=A[i]+c; 43 c=C[k]/10; 44 C[k]%=10; 45 ++i; 46 ++k; 47 } 48 while(j<lenb ) 49 { 50 C[k]=B[j]+c; 51 c=C[k]/10; 52 C[k]%=10; 53 ++j; 54 ++k; 55 } 56 if(c) C[k++]=c; 57 for(int m=k-1;m>=0;--m) 58 cout<<C[m]; 59 cout<<endl; 60 return 0; 61 } 62 // 63 // 64 //#include<iostream> 65 //#include<cstdio> 66 //#include<cstring> 67 //using namespace std; 68 //int main() 69 //{ 70 // char a1[100],b1[100]; 71 // int a[100],b[100],c[100],lena,lenb,lenc,i,x; 72 // memset(a,0,sizeof(a)); 73 // memset(b,0,sizeof(b)); 74 // memset(c,0,sizeof(c)); 75 // gets(a1); 76 // gets(b1); //输入加数与被加数 77 // lena=strlen(a1); 78 // lenb=strlen(b1); 79 // for (i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48; //加数放入a数组 80 // for (i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48; //加数放入b数组 81 // lenc =1; 82 // x=0; 83 // 84 // while (lenc <=lena||lenc <=lenb) 85 // { 86 // c[lenc]=a[lenc]+b[lenc]+x; //两数相加 87 // x=c[lenc]/10; 88 // c[lenc]%=10; 89 // lenc++; 90 // } 91 // c[lenc]=x; 92 // if (c[lenc]==0) 93 // lenc--; //处理最高进位 94 // for (i=lenc;i>=1;i--) 95 // cout<<c[i]; //输出结果 96 // cout<<endl; 97 // return 0; 98 //}
以上是关于高精度加法的主要内容,如果未能解决你的问题,请参考以下文章