北京大学程序在线评测系统 (“PekingUniversityOnlineJudge”)
POJ1001 (求高精度幂,Exponentiation,C++)
题目大意是对一个实数R( 0.0 < R < 99.999 ),精确计算 R 的 n 次方,其中n 是整数并且 0 < n <= 25。
具体思路在代码中的注释中都有体现,不做过多解释。
话不多说,具体代码如下:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string r;
int n,dianwei;
const int R_LEN=160;
short result[R_LEN],jieguo[R_LEN],chengshu[6];
while(cin>>r>>n)
{
int len=0;
for(int i=0;i<R_LEN;++i) jieguo[i]=result[i]=0;//初始化为0
for(int i=0;i<6;++i) chengshu[i]=0;
dianwei = 0;
size_t pos = r.find(".");
if(pos != string::npos) dianwei=(5-pos)*n;
for(int i=5,j=0;i>=0;--i)
{
if(r[i]!='.')
{
jieguo[j]=result[j]=chengshu[j]=r[i]-'0';//提取数位
++j;
}