高精度加乘法——四位改良版

来源:互联网 发布:算法的乐趣 pdf完整版 编辑:程序博客网 时间:2024/05/06 02:42
#include<bits/stdc++.h>using namespace std;string st1,st2;int a[500],b[500],len1,len2,len,c[500],m;int main(){cin>>st1>>st2;int l1=st1.size(),l2=st2.size();for(int i=l1-1,j=0;i>=0;i--,j++){a[j]=st1[i]-'0';int x=1;for(int k=1;k<4;k++){if(i-1<0)break;i--;x*=10;a[j]=(st1[i]-'0')*x+a[j];};len++;};len1=len;len=0;for(int i=l2-1,j=0;i>=0;i--,j++){b[j]=st2[i]-'0';int x=1;for(int k=1;k<4;k++){if(i-1<0)break;i--;x*=10;b[j]=(st2[i]-'0')*x+b[j];};len++;};len2=len;for(int i=0;i<len1;i++) for(int j=0;j<len2;j++) { c[i+j]+=a[i]*b[j]; c[i+j+1]=c[i+j+1]+c[i+j]/10000; c[i+j]%=10000; };for(int k=len1+len2-1;k>=0;k--){m=k;if(c[k]!=0)break;};cout<<c[m];for(int i=m-1;i>=0;i--){if(c[i]>=0&&c[i]<=9)cout<<"000";if(c[i]>=10&&c[i]<=99)cout<<"00";if(c[i]>=100&&c[i]<=999)cout<<"0";cout<<c[i];};return 0;}

0 0