亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++實現大整數乘法(字符串乘法)

發布時間:2020-09-05 04:52:37 來源:腳本之家 閱讀:297 作者:qiuchenl 欄目:編程語言

本文實例為大家分享了C++實現大整數乘法的具體代碼,供大家參考,具體內容如下

#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;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙游县| 治县。| 太仓市| 西吉县| 呼玛县| 莲花县| 江陵县| 渑池县| 石河子市| 拉孜县| 雷山县| 吉林市| 台安县| 博白县| 钟祥市| 丹江口市| 巴里| 通渭县| 本溪市| 扬州市| 龙山县| 东平县| 钟山县| 岫岩| 渭源县| 祥云县| 伊宁市| 元江| 永善县| 乐陵市| 科技| 阿图什市| 沂南县| 金塔县| 古丈县| 务川| 星子县| 甘孜| 农安县| 仙桃市| 千阳县|