大數冪運算 源於poj1001題目:http://acm.pku.edu.cn/judgeonline/problem?id=1001
mul_singleint(const
string&s1
,int n);
2. 迴圈利用大整數加法計算大整數乘積 string
mul_int(const
string&s1
,const
string
&s2);
3. 迴圈利用大整數乘積得到大數冪string
exponentiation(const
string&s1
,int
exp); 其中如果底數是浮點數,先去掉小數點,最後補上。
舉例: 2.0100^3
計算2.0100×2.0100×2.0100
2.0100×2.0100 = 2.01×2.01 = 201×201×10^(-4)
201*201 = 201*1 + 201*0*10 + 201*1*(10^2)
**實現:
#include
#include
#include
using
std::
string;
using
std::
cout;
using
std::
cin;
using
std::
max;
using
std::
endl;
using
std::
getline;
string
add(
const
string&s1
,const
string
&s2);
string
mul_singleint(
const
string&s1
,int n);
string
mul_int(
const
string&s1
,const
string
&s2);
intcalpointnum(
const
string&s1
,const
string
&s2);
void
removezero(
string
& s);
void
removedot(
string
& s);
string
exponentiation(
const
string&s1
,int
exp);
string
mul_singleint(
const
string&s1
,int n)
for (
intj=
0,i=
len1
-1;
i>=
0; ++j,
--i)
// multiply every int element in array
intlastcarry=0;
for (
inti=
0; i
<
len1;
++i)
num1
[len1]+=
lastcarry;
//store result.
inti
=len1;
while(
num1[i
]==0)
--i;
for (
i; i
>=
0; --
i)
delete
num1;
return
ret;
}string
mul_int(
const
string&s1
,const
string
&s2)
return
ret;
}string
mul_float(
const
string&s1
,const
string
&s2)
if (
pos2
>=
0)
string
ret;
ret=
mul_int(
ss1,ss2);
for (
intj=
ndot
-ret
.length();
j>
0; j
--)
ret.
insert(
ret.begin
(),'0');
if (
ndot
>
0)
return
ret;
}string
add(
const
string&s1
,const
string
&s2)
intlen1
,len2;
len1=s1
.length();
len2=s2
.length();
for (
inti=
len1-1
,j=0;
i>=
0; --i,
++j)
for (
inti=
len2-1
,j=0;
i>=
0; --i,
++j)
//add every int element in array
for (
inti=
0; i
<
len;
++i)
}//store result.
string
ret;
inti
=len;
while(
num1[i
]==0)
--i;
for (
i; i
>=
0; --
i)
delete
num1;
delete
num2;
return
ret;
}void
removezero(
string
& s)
while (
*(s.
end()
-1) ==
'0')
return;
}void
removedot(
string
& s)
}int
calpointnum(
const
string&s1
,const
string
&s2)
intpos1=s1
.find(
'.');
if (
pos1
>=
0)
pos1
= s .
length()
-pos1-1;
}else
pos1=0;
intpos2=s2
.find(
'.');
if (
pos2
>=
0)
pos2
= s .
length()
-pos2-1;
}else
pos2=0;
return
pos1
+pos2;
}string
exponentiation(
const
string&s1
,int
exp)
return
ret;
}int
main()
return
0;
}
大數運算 冪次方運算
以下演算法計算n的m次方 m的定義域是 1,2 31 n的定義域是 0,65535 原理就是按位相乘,處理進製 include include include void main void std vectorvecnum 1,n 用vector儲存大數,首位賦n for int i 0 i m 1...
大數求冪運算
題目 小明是個小學五年級的學生,為了早點去看自己愛看的 他想快點把作業做完。可是可惡的數學老師今天卻布置了一道難題,小明想了很久也不知道該怎麼做。你的任務就是幫小明解決掉這道數學題。題目是這樣子的,有乙個整數a 2 31 a 2 31 1 計算它的整數冪 a n,其中 1 n 99 第一行是乙個整數...
大數處理之二(冪運算)
對於冪運算來說,就是相同的幾個數相乘,改成大數處理問題,同樣可以轉化成兩個大數相乘問題,乘得的積作為乙個新數,再用這個新數與另乙個作積,這樣迴圈下去即可進行冪運算。對於兩個大數該如何處理 對於字串s1 100 中存放第乙個大數,s2 100 中存放第二個大數 定義兩個整型陣列 a 100 b 100...