大整数乘法

来源:互联网 发布:剑灵天剑士捏脸数据 编辑:程序博客网 时间:2024/05/22 03:22

大整数乘法


总时间限制: 
1000ms 
内存限制: 
65536kB
描述

求两个不超过200位的非负整数的积。

输入
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
1234567890098765432100
样例输出
1219326311126352690000
#include<stdio.h>#include<string.h> void reverse(char a[]){    int len=strlen(a);int i,j;char ch;for(i=0,j=len-1;i<j;j--,i++){ch=a[i];a[i]=a[j];a[j]=ch;}}int main(){char a[201],b[201];int c[401];int i,j,k;scanf("%s%s",a,b);for(i=0;i<401;i++){c[i]=0;}reverse(a);reverse(b);  for(i=0;i<strlen(a);i++){for(j=0;j<strlen(b);j++){c[i+j]+=(a[i]-'0')*(b[j]-'0');}}  for(i=0;i<strlen(a)+strlen(b);i++){if(c[i]>=0){c[i+1]+=c[i]/10;c[i]%=10;}}for(k=i;k>0;k--){if(c[k]==0){continue;}else{break;}}for(;k>=0;k--){printf("%d",c[k]);}printf("\n");return 0;}


原创粉丝点击