大数的加减乘除(转赵老四)
发布时间:2020-12-14 02:57:42 所属栏目:大数据 来源:网络整理
导读:#include?iostream #include?string #include?algorithm using ? namespace ? std; int ? COMPARE(string?number1,?string?number2)?{ ???? i,j; ? length1?=?number1.size(); length2?=?number2.size(); ? ???? if (number1.size()?==?0)?number1?=? "0" ;
#include?<iostream>
#include?<string>
#include?<algorithm>
using ?
namespace ?
std;
int ?
COMPARE(string?number1,?string?number2)?{
????
i,j;
?
length1?=?number1.size();
length2?=?number2.size();
?
????
if
(number1.size()?==?0)?number1?=?
"0"
;
(number2.size()?==?0)?number2?=?
;
?
????
j?=?0;
for
(i?=?0;?i?<?length1;?++i)?{
????????
(number1[i]?==?
'0'
)?++j;
else?
break
;
}
number1?=?number1.substr(j);
?
j?=?0;
(i?=?0;?i?<?length2;?++i)?{
(number2[i]?==?
)?++j;
;
}
number2?=?number2.substr(j);
?
length1?=?number1.size();
length2?=?number2.size();
?
(length1?>?length2)?{
return?
1;
}?
(length1?==?length2)?{
(number1.compare(number2)?>?0)?{
????????????
1;
????????
(number1.compare(number2)?==?0)?{
0;
else?
{
-1;
}
{
-1;
}
?
0;
}
string?PLUS(string?number1,string?number2)?{
i;
length1?=?number1.size();
length2?=?number2.size();
?
string?result=
""
;
?
reverse(number1.begin(),?number1.end());
reverse(number2.begin(),?number2.end());
?
(i?=?0;?i?<?length1?&&?i?<?length2;?i++)?{
????????
char ?
c?=?(
char
)(number1[i]?+?number2[i]?-?48);
result?=?result?+?c;
}
?
while
(i?<?length1)?{
result?=?result?+?number1[i];
++i;
}
?
(i?<?length2)?{
result?=?result?+?number2[i];
++i;
}
?
carry?=?0;
(i?=?0;?i?<?(
int
)result.size();?++i)?{
value?=?result[i]?-?48?+?carry;
result[i]?=?(
)(value?%?10?+?48);
carry?=?value?/?10;
}
?
(carry?!=0?)?{
result?=?result?+?(
)(carry?+?48);
}
?
(i?=?result.size()?-?1;?i?>=?0;?i--)?{
(result[i]?!=?
)?
;
}
?
result?=?result.substr(0,?i?+?1);
?
reverse(result.begin(),?result.end());
(result.length()?==?0)?result?=?
;
result;
}
string?MINUS(string?number1,string?number2)?{
i;
string?result?=?
;
?
length1?=?number1.size();
length2?=?number2.size();
?
(COMPARE(number2,number1)?>?0)?{
return?
"-" ?
+?MINUS(number2,?number1);
}
?
?
(i?=?0;?i?<?length1?&&?i?<?length2;?i++)?{
c?=?number1[i]?-?number2[i]?+?48;
result?=?result?+?c;
}
?
(i?<?length1)?{
(;?i?<?length1;?i++)?{
????????????
result?=?result?+?number1[i];
}
}
?
carry?=?0;
)result.length();?i++)?{
value?=?result[i]?-?48?+?carry;
(value?<?0)?{
value?=?value?+?10;
carry?=?-1;
carry?=?0;
result[i]=(
)(value?+?48);
}
?
(i?=?result.size()?-?1;?i?>=?0;?i--)?{
)
;
}
?
?
(result.length()==0)?result?=?
;
result;
}
string?MULTIPLY(string?number1,?string?number2)?{
*iresult;
length1?=?number1.size();
length2?=?number2.size();
;
?
?
iresult?=?(
*)
malloc
(
sizeof
(
)?*?(length1?+?length2?+?1));
????
memset
(iresult,?0,?
)?*?(length1?+?length2?+?1));
?
(i?=?0;?i?<?length1;?i++)?{
(j?=?0;?j?<?length2;?j++)?{
iresult[i+j]?+=?((number1[i]?-?48)?*?(number2[j]?-?48));
}
}
?
carry?=?0;
(i?=?0;?i?<?length1?+?length2;?i++)?{
value?=?iresult[i]?+?carry;
iresult[i]?=?value?%?10;
carry?=?value?/?10;
}
?
(i?=?length1?+?length2?-?1;?i?>=?0;?i--)?{
(iresult[i]?!=?0)
;
}
?
(;?i?>=?0;?i--)?{
)(iresult[i]+48);
}
?
free
(iresult);
?
(result?==?
)?result?=?
;
result;
}
string?factorial(string?n)?{
string?temp?=?
"1"
;
string?i;
(i?=?
;?COMPARE(i,?n)?<=?0;?i?=?PLUS(i,?
))?{
temp?=?MULTIPLY(temp,?i);
}
temp;
}
main(
void
)?{
cout?<<?factorial(
"100"
)?<<?endl;
0;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |