C++大数乘大数

#include<iostream>
#include<string>
#include <typeinfo>
using namespace std;
string add(string str1,string str2)
{
  if(str1.size()<str2.size()){
    string temp=str1;str1=str2;str2=temp;}
  int size1=str1.size(),size2=str2.size(),flag=0,a,b,sum;
  while(size1>0){
    a=str1[size1-1]-'0';
    if(size2>0)
       b=str2[size2-1]-'0';
    else
       b=0;
    sum=a+b+flag;
    if(sum>=10)
{
      str1[size1-1]='0'+sum%10;flag=1;}
    else
    {
      str1[size1-1]='0'+sum;flag=0;
    }
    size1--;
    size2--;
  }
  if(1==flag)
     str1="1"+str1;
  return str1;
}
string mul(string str1,string str2)
{
  int size1=str1.size(),size2=str2.size(); 
  string st=str1;
  if(str2=="0"){
str1="0";
  }else{
for(string str_i="1";str_i!=str2;str_i=add(str_i,"1"))
str1=add(str1,st);
  }
  return str1;
}


string create_str(string str,long int n){
long int start=0;
while(start!=n){
start++;
if(str!="0")str+='0';
}
return str;
}
string large_mul(string str1,string str2){
string pre_number=(str1.size()>str2.size()?str1:str2);
string next_number=(pre_number==str1?str2:str1);
string sumsss("0");
string sttt;
for(long int str_i=1;str_i<=next_number.length();str_i++){
sttt=next_number[next_number.length()-str_i];
sumsss=add(sumsss,create_str(mul(pre_number,sttt),str_i-1));
}
return sumsss;
}
//主函数
int main()
{
string str1,str2;
while(cin>>str1>>str2)
{
cout<<large_mul(str1,str2)<<endl;
}
//cout<<large_mul("2323045824079150237656390162526475278445689326875347087673675611353883902389729687120994011326030390641817785278444028093254495015810113470721304014369021774241538912487608251535729142827887803493885529130462293573040246362460046097607059061507138337272346798910625924151980182652522632846544434900566317557022035830835604584258524233989707717446751689927602723384537769695979020393112771684264587650947960347304090047906808769238232866777035223002210241536747603206698186739498793579677275054512932238867545577552750777151769503588333387116344252060518927565644100795567041123137005116865236427766910896795278861790582979845585607998524088174434242661209829951409808007062557807906169512272525478866539614120522672888890080691891908088967122967544026599946741309492466508604496302798071810619267186310428997640230224968086938965340089644758690907409785957991187537421581416044803868706783677017606829528495556316901307416078812522043961505455891405219571995081417567887394159860686141438828343874332442157042655357433262158632715424857827817639196984662996660290414884764457159445246037634926345360284563035322782927107220166401166708539296148836545059395154199645386044218937416331548766172125290245868401188924144383872899966579972399330724699154090721129725406103309620730223614340494361044684593499754739232509775165763314650249289847733980686818437164947756852695907504943997941406953909960430541834261383151212136596130198425720353652941751963702879146347914935486188197903117724421097169721552473492811912496933017006218153547670372801333510784448361258189393532059422743190065579306773605133724258914637607300739675248021833336309530822953997269265040424149212273461967519930599033534191907269273769748034192845200958678922007789121954989319461943811635413454082067931300354641589813240193068747961631916546297859237434522370023158185152220177154606883309058723197953641170741138591940011170992444845243746458088637823345606120116799919993813777438091076473740243011174207733798251441000023230458240791502376563901625264752784456893268753470876736756113538839023897296871209940113260303906418177852784440280932544950158101134707213040143690217742415389124876082515357291428278878034938855291304622935730402463624600460976070590615071383372723467989106259241519801826525226328465444349005663175570220358308356045842585242339897077174467516899276027233845377696959790203931127716842645876509479603473040900479068087692382328667770352230022102415367476032066981867394987935796772750545129322388675455775527507771517695035883333871163442520605189275656441007955670411231370051168652364277669108967952788617905829798455856079985240881744342426612098299514098080070625578079061695122725254788665396141205226728888900806918919080889671229675440265999467413094924665086044963027980718106192671863104289976402302249680869389653400896447586909074097859579911875374215814160448038687067836770176068295284955563169013074160788125220439615054558914052195719950814175678873941598606861414388283438743324421570426553574332621586327154248578278176391969846629966602904148847644571594452460376349263453602845630353227829271072201664011667085392961488365450593951541996453860442189374163315487661721252902458684011889241443838728999665799723993307246991540907211297254061033096207302236143404943610446845934997547392325097751657633146502492898477339806868184371649477568526959075049439979414069539099604305418342613831512121365961301984257203536529417519637028791463479149354861881979031177244210971697215524734928119124969330170062181535476703728013335107844483612581893935320594227431900655793067736051337242589146376073007396752480218333363095308229539972692650404241492122734619675199305990335341919072692737697480341928452009586789220077891219549893194619438116354134540820679313003546415898132401930687479616319165462978592374345223700231581851522201771546068833090587231979536411707411385919400111709924448452437464580886378233456061201167999199938137774380910764737402430111742077337982514410000","2323045824079150237656390162526475278445689326875347087673675611353883902389729687120994011326030390641817785278444028093254495015810113470721304014369021774241538912487608251535729142827887803493885529130462293573040246362460046097607059061507138337272346798910625924151980182652522632846544434900566317557022035830835604584258524233989707717446751689927602723384537769695979020393112771684264587650947960347304090047906808769238232866777035223002210241536747603206698186739498793579677275054512932238867545577552750777151769503588333387116344252060518927565644100795567041123137005116865236427766910896795278861790582979845585607998524088174434242661209829951409808007062557807906169512272525478866539614120522672888890080691891908088967122967544026599946741309492466508604496302798071810619267186310428997640230224968086938965340089644758690907409785957991187537421581416044803868706783677017606829528495556316901307416078812522043961505455891405219571995081417567887394159860686141438828343874332442157042655357433262158632715424857827817639196984662996660290414884764457159445246037634926345360284563035322782927107220166401166708539296148836545059395154199645386044218937416331548766172125290245868401188924144383872899966579972399330724699154090721129725406103309620730223614340494361044684593499754739232509775165763314650249289847733980686818437164947756852695907504943997941406953909960430541834261383151212136596130198425720353652941751963702879146347914935486188197903117724421097169721552473492811912496933017006218153547670372801333510784448361258189393532059422743190065579306773605133724258914637607300739675248021833336309530822953997269265040424149212273461967519930599033534191907269273769748034192845200958678922007789121954989319461943811635413454082067931300354641589813240193068747961631916546297859237434522370023158185152220177154606883309058723197953641170741138591940011170992444845243746458088637823345606120116799919993813777438091076473740243011174207733798251441000023230458240791502376563901625264752784456893268753470876736756113538839023897296871209940113260303906418177852784440280932544950158101134707213040143690217742415389124876082515357291428278878034938855291304622935730402463624600460976070590615071383372723467989106259241519801826525226328465444349005663175570220358308356045842585242339897077174467516899276027233845377696959790203931127716842645876509479603473040900479068087692382328667770352230022102415367476032066981867394987935796772750545129322388675455775527507771517695035883333871163442520605189275656441007955670411231370051168652364277669108967952788617905829798455856079985240881744342426612098299514098080070625578079061695122725254788665396141205226728888900806918919080889671229675440265999467413094924665086044963027980718106192671863104289976402302249680869389653400896447586909074097859579911875374215814160448038687067836770176068295284955563169013074160788125220439615054558914052195719950814175678873941598606861414388283438743324421570426553574332621586327154248578278176391969846629966602904148847644571594452460376349263453602845630353227829271072201664011667085392961488365450593951541996453860442189374163315487661721252902458684011889241443838728999665799723993307246991540907211297254061033096207302236143404943610446845934997547392325097751657633146502492898477339806868184371649477568526959075049439979414069539099604305418342613831512121365961301984257203536529417519637028791463479149354861881979031177244210971697215524734928119124969330170062181535476703728013335107844483612581893935320594227431900655793067736051337242589146376073007396752480218333363095308229539972692650404241492122734619675199305990335341919072692737697480341928452009586789220077891219549893194619438116354134540820679313003546415898132401930687479616319165462978592374345223700231581851522201771546068833090587231979536411707411385919400111709924448452437464580886378233456061201167999199938137774380910764737402430111742077337982514410000")<<endl;
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值