C++ 两个高精度数相乘

来源:互联网 发布:啊哈算法 epub 编辑:程序博客网 时间:2024/06/04 18:33
#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <stdio.h>using namespace std;const int N=1000;int main(){   string s1,s2;   int a[N],b[N],sum[N];   int l1,l2;   cin>>s1>>s2;   l1=s1.length();   l2=s2.length();   memset(a,0,sizeof(a));   memset(b,0,sizeof(b));   memset(sum,0,sizeof(sum));   for(int i=0;i<l1;i++)    //将字符串倒置并转换成数串    a[i]=s1[l1-i-1]-'0';   for(int i=0;i<l2;i++)    b[i]=s2[l2-i-1]-'0';    int start;    for(int i=0;i<l1;i++)    {        start=i;               //start实现错位        for(int j=0;j<l2;j++)        {            sum[start++]+=a[i]*b[j];        }    }    for(int i=0;i<start;i++)    {        sum[i+1]+=sum[i]/10;        sum[i]=sum[i]%10;    }    if(sum[start]==0) start--;    for(int i=start;i>=0;i--)        printf("%d",sum[i]);   return 0;}

原创粉丝点击