两个大整数相乘
来源:互联网 发布:搜索排名优化哪家好 编辑:程序博客网 时间:2024/04/27 23:40
问题描述
求两个不超过200位的非负整数的积。输入数据有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出要求一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
输入样例
12345678900
98765432100
输出样例
1219326311126352690000
这两个大整数相乘,先不着急处理进位,到后面统一处理。
下面是我的代码:
#include<iostream>
#include<cstring>
using namespace std;
const int MAXN=200+5;
char str1[MAXN];
char str2[MAXN];
int str3[MAXN];
int str4[MAXN];
int str5[MAXN*2];
int main(void)
{
memset(str1,0,sizeof(str1));
memset(str2,0,sizeof(str2));
memset(str3,0,sizeof(str3));
memset(str4,0,sizeof(str4));
memset(str5,0,sizeof(str5));
cin>>str1>>str2;
int len1=strlen(str1);
int i;
int j=0;
for(i=len1-1; i>=0; i--)
{
str3[j++]=str1[i]-'0';
}
int len2;
len2=strlen(str2);
j=0;
for(i=len2-1; i>=0; i--)
{
str4[j++]=str2[i]-'0';
}
for(i=0; i<len2; i++)
{
for(int j=0; j<len1; j++)
{
str5[i+j]+=str4[i]*str3[j];
}
}
for(i=0; i<MAXN*2; i++)
{
if(str5[i]>=10)
{
str5[i+1]+=str5[i]/10;
str5[i]%=10;
}
}
for(i=2*MAXN-1; i>=0&&str5[i]==0; i--);
if(i>=0)
{
for(; i>=0; i--)
{
cout<<str5[i];
}
cout<<endl;
}
return 0;
}
- 两个大整数相乘
- 实现两个大整数相乘
- 两个大整数相乘程序
- Java任意两个大整数相乘
- C++中两个大整数相乘
- java程序计算两个大整数相乘
- 两个长整数相乘
- c 两个整数相乘
- 大整数相乘问题
- 大整数相乘算法
- 大整数相乘算法!
- 大整数相乘
- 大整数相乘算法
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- 大整数相乘
- MFC仿QQ好友列表控件
- 归并排序 全面总结 Merge Sort
- Apache 开启 mod_rewrite
- cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题
- 智能推荐系统开发中的十个关键注意点
- 两个大整数相乘
- cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题
- nmon工具使用方法
- cell中button怎么得到对应cell的indexpath 以及关于UITableViewCellContentView的问题
- 二叉查找树(二叉排序树)的详细实现
- AndroidUI设计之ViewPaper详解
- hdu1041-Computer Transformation
- PHP小小小理
- 常用Windows消息、常量命名参考