gpt4 book ai didi

C++实现大整数乘法(字符串乘法)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++实现大整数乘法(字符串乘法)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例为大家分享了C++实现大整数乘法的具体代码,供大家参考,具体内容如下 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
 
string add(string a,string b)
{
  if (a.length()==0)
  return b;
  if (b.length()==0)
  return a;
  a.length()<b.length()?a.swap(b):a.length();
 
  reverse(a.begin(),a.end());
  reverse(b.begin(),b.end());
  int flag=0;
  for ( int i=0;i<a.length();i++)
  {
  int aInt=a[i]- '0' ;
  int bInt=0;
  if (i<b.length())
   bInt=b[i]- '0' ;
  int result=aInt+bInt+flag;
  a[i]=result%10+ '0' ;
  flag=result/10;
  }
  if (flag!=0)
  {
  a=a+( char )(flag+ '0' );
  }
  reverse(a.begin(),a.end());
  return a;
}
string multiply(std::string strMultiplierA, char x)
{
  int b=x- '0' ;
  int flag=0;
  for ( int i=strMultiplierA.length()-1;i>=0;i--)
  {
  int a=strMultiplierA[i]- '0' ;
  int result=a*b+flag;
  strMultiplierA[i]=result%10+ '0' ;
  flag=result/10;
  }
  if (flag!=0)
  strMultiplierA=( char )(flag+ '0' )+strMultiplierA;
  while (strMultiplierA.length()>1&&strMultiplierA[0]== '0' )
  strMultiplierA=strMultiplierA.substr(1,strMultiplierA.length());
  return strMultiplierA;
}
 
/*****************************************************************************
  Prototype  : multiply
  Description : 两个任意长度的长整数相乘, 输出结果
  Input Param :
         const std::string strMultiplierA 乘数A
         const std::string strMultiplierB 乘数B
  Output    :
         std::string strRst      乘法结果
  Return Value :
         int            0 正确
                      -1 异常
*****************************************************************************/
int multiply ( const std::string strMultiplierA, const std::string strMultiplierB, std::string &strRst)
{
 
   /* 在这里实现功能 */
   if (strMultiplierA.length()<=0||strMultiplierB.length()<=0)
  return -1;
  bool flag= false ; //false"+" true"-"
  string strA=strMultiplierA,strB=strMultiplierB;
  if (strMultiplierA[0]== '-' )
  {
  flag=~flag;
  strA=strMultiplierA.substr(1,strMultiplierA.length());
  }
  if (strMultiplierB[0]== '-' )
  {
  flag== true ?flag= false :flag= true ;
  strB=strMultiplierB.substr(1,strMultiplierB.length());
  }
 
  for ( int i=strB.length()-1;i>=0;i--)
  {
  string result=multiply(strA,strB[i]);
  int j=i;
  while (++j<strB.length())
   result=result+ "0" ;
  // while(result.length()>1&&result[0]=='0')
  // result=result.substr(1,result.length());
  strRst=add(strRst,result);
  }
  while (strRst.length()>1&&strRst[0]== '0' )
  strRst=strRst.substr(1,strRst.length());
  if (flag== true &&strRst!= "0" )
  strRst= '-' +strRst;
   return 0;
}
 
int main()
{
  std::string strResult = "" ;
 
  multiply( "-5489324" , "0" , strResult);
 
  cout<<strResult<<endl;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/qiuchenl/article/details/17752073 。

最后此篇关于C++实现大整数乘法(字符串乘法)的文章就讲到这里了,如果你想了解更多关于C++实现大整数乘法(字符串乘法)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com