高精度加法

来源:互联网 发布:张伯伦生涯场均数据 编辑:程序博客网 时间:2024/06/04 19:12

本来应该是很久以前就应该写出来的了·····惭愧惭愧

总体思路:用数组把每一位数存起来,然后进行处理。

#include<iostream>#include<cstring>using namespace std;int main(){ios::sync_with_stdio(false);char a[200],b[200];int a_1[200],b_1[200];cin>>a>>b;int len1=strlen(a);int len2=strlen(b);for(int i=0;i<len1;i++)//将字符型转化为整形a_1[i]=a[i]-'0';for(int i=0;i<len2;i++)b_1[i]=b[i]-'0';int i=len1-1,j=len2-1;int k=len1>len2?len1:len2-1;int m=k;int c[200];memset(c,0,sizeof(c)); for(;k>=0;i--,j--,k--){if(j<0){//当两个数字长短不一样时,直接将较长的程序高位直接复制到c数组上c[k]+=a_1[i];continue;}if(i<0){c[k]+=b_1[j];continue;}c[k]+=a_1[i]+b_1[j];if(c[k]>=10){c[k-1]++;c[k]=c[k]%10;}}bool flag=true;for(int i=0;i<=m;i++){//跳过前导零if(c[i]!=0)flag=false;if(flag)continue;cout<<c[i];}cout<<endl;return 0;}


0 0
原创粉丝点击