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 - 墨涵天地

目录
相关文章
|
3月前
|
C++
各位相加(C++)
各位相加(C++)
17 1
|
4月前
|
C语言
求一个整数的所有因数
C 语言实例 - 求一个整数的所有因数
49 1
|
5月前
|
存储
A除于B(大数相除)
A除于B(大数相除)
33 0
|
9月前
|
存储 C++
大整数运算(高精度运算)C/C++
大整数运算(高精度运算)C/C++
150 0
|
11月前
|
C++
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
70 0
11:计算浮点数相除的余数
11:计算浮点数相除的余数
214 0
35.数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
34 0
35.数值的整数次方
|
前端开发 JavaScript 程序员
数值的整数次方
数值的整数次方
数值的整数次方
【3.整数与浮点数二分】
1.整数二分 >### 二分本质 >- 有单调性,一定可以二分 >- 二分的题目,不一定非要有单调性 >### 思路:分俩种情况,有俩种模板
76 0
【3.整数与浮点数二分】