加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数乘法的实现

发布时间:2020-12-14 04:09:00 所属栏目:大数据 来源:网络整理
导读:/****************************************************************************** *Author: steven *Datatime: 2013-05-23 *此程序用来演示大数乘法的算法 *******************************************************************************/ #include i

/******************************************************************************
*Author: steven
*Datatime: 2013-05-23
*此程序用来演示大数乘法的算法
*******************************************************************************/

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

#include <string>
using std::string;

void calculate(void);

int main()
{
?calculate();
?return 0;
}

void calculate(void)
{
?string str1,str2;

?cout<<"请输入两个大的正整数:n";
?cin>>str1>>str2;

?cout<<str1<<" * "<<str2<<" = ";

?int i,j,length,length1,length2;
?length1 = str1.size();
?length2 = str2.size();
?length = length1 + length2;
?int *pch = new int[length];

?for (i = 0; i < length; i++)
?{
??pch[i] = 0;
?}

?for (i = 0; i < length1; i++)
?{
??for (j = 0; j < length2; j++)
??{
???pch[i+j+1] += (str1[i] - '0') * (str2[j] - '0');
??}
?}

?//下面代码实现进位操作
?for (i = length; i > 0; i--)
?{
??if (pch[i] >= 10)
??{
???pch[i-1] += pch[i] / 10;
???pch[i] = pch[i] % 10;
??}
?}

?//跳过前导的零值
?while(pch[++i] == 0);

?for (; i < length; i++) ?{ ??cout<<pch[i]; ?} ?cout<<endl; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读