您的位置:首页 > 其它

大整数相乘------输出两个不超过100位的大整数的乘积

2014-09-13 19:39 543 查看
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char ch[100];
char sh[100];
int ah[200]={0};
int bh[200]={0};
int gh[200]={0};
cin>>ch>>sh;
int len1=strlen(ch);
int len2=strlen(sh);//当做字符串读入
int i;
for(i=len1-1;i>=0;i--)
ah[len1-1-i]=ch[i]-'0';//逆序读入数组,左对齐
for(i=len2-1;i>=0;i--)
bh[len2-1-i]=sh[i]-'0';
int temp,k,j;
for(i=0;i<len1;i++)
for(j=0;j<len2;j++)
{
temp=ah[i]*bh[j];
gh[i+j]+=temp; //注意:gh为结果存储地址,所以为i+j
k=i+j;
while(gh[k]>=10) //向前遍历直到没有进位完毕
{
gh[k+1]+=(gh[k]/10);
gh[k]%=10;
k++;
}
}
int flag=0;
for(i=199;i>=0;i--) //从后往前输出,注意0的输出
{
if(gh[i]!=0 || flag==1)
{
cout<<gh[i];
flag=1;
}
}
cout<<endl;
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐