C++实现大整数乘法(字符串乘法)
本文实例为大家分享了C++实现大整数乘法的具体代码,供大家参考,具体内容如下
#include#include #include usingnamespacestd; stringadd(stringa,stringb) { if(a.length()==0) returnb; if(b.length()==0) returna; a.length() =0;i--) { inta=strMultiplierA[i]-'0'; intresult=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()); returnstrMultiplierA; } /***************************************************************************** Prototype:multiply Description:两个任意长度的长整数相乘,输出结果 InputParam: conststd::stringstrMultiplierA乘数A conststd::stringstrMultiplierB乘数B Output: std::stringstrRst乘法结果 ReturnValue: int0正确 -1异常 *****************************************************************************/ intmultiply(conststd::stringstrMultiplierA,conststd::stringstrMultiplierB,std::string&strRst) { /*在这里实现功能*/ if(strMultiplierA.length()<=0||strMultiplierB.length()<=0) return-1; boolflag=false;//false"+"true"-" stringstrA=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(inti=strB.length()-1;i>=0;i--) { stringresult=multiply(strA,strB[i]); intj=i; while(++j 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; return0; } intmain() { std::stringstrResult=""; multiply("-5489324","0",strResult); cout< 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。