3、求两个大整数的相乘问题

简介: 求两个大整数的相乘问题 日常常见的就是两个大整数相乘了。前面日志中曾经做过大数阶乘问题。其实问题都类似。只是前面当时用的是重复相加而得结果,然而,如果阶乘很大的话,重复相加也不能解决问题的,必须用数组来进行存储,然后模拟小学时竖式相乘的思想,即在一个数组中每个元素都只能是0~9,如果超越了这个界限,则进位到高位。

求两个大整数的相乘问题

日常常见的就是两个大整数相乘了。前面日志中曾经做过大数阶乘问题。其实问题都类似。只是前面当时用的是重复相加而得结果,然而,如果阶乘很大的话,重复相加也不能解决问题的,必须用数组来进行存储,然后模拟小学时竖式相乘的思想,即在一个数组中每个元素都只能是09,如果超越了这个界限,则进位到高位。在处理这个问题中,为了更好的思维,我们将其倒序,最后倒序输出。

【问题】阶乘计算

http://blog.163.com/zhoumhan_0351/blog/static/3995422720102165536445/

#include "iostream"

#include "string"

#pragma warning(disable:4267)

using namespace std;

const int N=1000;

bool Dsure(string str){

int m=str.length();

for(int i=0;i<m;i++){

if((str[i]>'9')||str[i]<'0')

  return false;

return true;

}

}//Dsure

void reverseIt(string& str){

    int m=str.length();

for(int i=0,j=m-1;i<=j;i++,j--){

char temp;

temp=str[i];

str[i]=str[j];

str[j]=temp;

}

}

void StrToInt(string str1,int (&a)[N])

{

for(unsigned int i=0;i<str1.size();i++)

a[i]=str1[i]-'0';

}

void Calcuate(string str1,string str2){

int m=0,n=0,count=0;

int a[N]={0},b[N]={0},Result[2*N]={0};

m=str1.length();//str1*str2,a*b

n=str2.length();

reverseIt(str1);

reverseIt(str2);

StrToInt(str1,a);

StrToInt(str2,b);

for(int i=0;i<n;i++)//乘数

for(int j=0;j<m;j++)//被乘数的位置

   {

   Result[i+j]+=b[i]*a[j];

   if(Result[i+j]>10){

   Result[i+j+1]+=Result[i+j]/10;

   Result[i+j]=Result[i+j]%10;

    }//if

   }//for

if(Result[m+n-1]!=0) count=m+n-1;

else count=m+n-2;

for(int i=count;i>=0;i--)

  {

  cout<<Result[i];

  }//for

cout<<endl;

}

int main()

{

string str1,str2;

while(1)

{

cout<<"Please input two integer:"<<endl;

cin>>str1>>str2;

if(!Dsure(str1)) 

   {

   cout<<"you must cin a int!!"<<endl;

   }

if(!Dsure(str2))

   {

   cout<<"you must cin a int!!"<<endl;

   }

cout<<"You have input is:"<<endl;

cout<<str1<<endl<<str2<<endl;

Calcuate(str1,str2);

}//while

}

52、求两个大整数的相乘问题 - EdwardLewis - 墨涵天地

目录
相关文章
|
1月前
两个整数相加
【10月更文挑战第12天】两个整数相加
19 5
|
5月前
|
Python
NumPy 舍入小数、对数、求和和乘积运算详解
NumPy 提供五种舍入小数的方法:`trunc()`, `fix()`, `around()`, `floor()`, `ceil()`。此外,它还支持对数运算,如 `log2()`, `log10()`, `log()`,以及自定义底数的对数。NumPy 的 `sum()` 和 `prod()` 函数用于数组求和与乘积,可指定轴进行计算,`cumsum()` 和 `cumprod()` 实现累积求和与乘积。关注公众号 &quot;Let us Coding&quot; 获取更多内容。
60 2
|
6月前
|
存储 弹性计算 运维
对100 以内的所有正整数相加求和
【4月更文挑战第29天】
78 2
|
6月前
大整数的因子(利用求余)
大整数的因子(利用求余)
|
6月前
|
C++
各位相加(C++)
各位相加(C++)
33 1
|
6月前
大整数加法_大整数减法
大整数加法_大整数减法
|
存储
A除于B(大数相除)
A除于B(大数相除)
70 0
|
存储 C++
大整数运算(高精度运算)C/C++
大整数运算(高精度运算)C/C++
265 0
|
C++
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
116 0