不得不说我又输了,第一次提交失败了,想的太简单,忘了负数和0 的情况。这题就这一点,一旦知道自己原来错了,这题就没有什么可以拟补失误的机会了。
// Pow(x, n).cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
double pow(double x, int ni) {
double ret=1;
double factor = x;
bool flag = false;//is negative
long long n = ni;
if (n<0)
{
flag = true;
n = -n;
}
if (flag&&x==0.0)
{
return 0.0;
}
while(n)
{
if (n&0x01)
{
ret *= factor;
}
n = n>>1;
factor *= factor;a
}
if (flag)
{
ret = 1.0/ret;
}
return ret;
}
int _tmain(int argc, _TCHAR* argv[])
{
double d;
int n;
while(cin>>d&&cin>>n)
cout<<pow(d,n)<<endl;
system("pause");
return 0;
}