poj 2389 大数乘法

来源:互联网 发布:mac必备软件2017 知乎 编辑:程序博客网 时间:2024/05/18 18:47


//大数乘大数,主要思想是模拟两个数相乘,

//同时将两个数用数组的形式进行运算,两个数每一位相乘的下标和保存到一起,然后进行进位

#include <stdio.h>
#include <string.h>

int main(){
    char str1[1000],str2[1000],str3[1000];
    int sum[1001],i,j,len1,len2;
    scanf("%s%s",str1,str2);
     len1=strlen(str1),len2=strlen(str2);
    for(i=0;i<=1000;i++)
        sum[i]=0;
    for(i=len1-1;i>=0;i--){
        for(j=len2-1;j>=0;j--){
            sum[1000-(len1+len2-2-i-j)]+=(str1[i]-'0')*(str2[j]-'0');                //1000-(len1+len2-2-i-j)这个表达式很关键。
        }
    }
    for(i=1000;i>=0;i--){
        if(sum[i]>9){
            sum[i-1]+=sum[i]/10;
            sum[i]%=10;
        }
    }
   i=0;
 while(sum[i]==0)
  i++;
 if(i>1000)
  printf("0");
 else
 for(; i<=1000; i++)
  printf("%d",sum[i]);
    printf("\n");
    return 0;
}

0 0