在做HDOJ2045不容易系列之(3)—— LELE的RPG难题的时候,发现规律为 F(n)+F(n-1)=3*2^(n-1),原本代码如下
#include <stdio.h>
#include <math.h>
_int64 a[51]={0};
void set()
{
a[1]=3;
a[2]=6;
for(int i=3; i<51; i++){
a[i]=3*_int64(pow(2,i-1))-a[i-1];
}
}
int main()
{
int n;
set();
while(scanf("%d",&n)!=EOF)
printf("%I64d\n",a[n]);
}
结果一直是wa,查阅http://www.cplusplus.com/reference/clibrary/cmath/pow/ c++函数标准用法后发现pow函数原型为:
double pow ( double base, double exponent );
long double pow ( long double base, long double exponent );
float pow ( float base, float exponent );
double pow ( double base, int exponent );
long double pow ( long double base, int exponent );
参数类型需要用浮点float,将第九行改成
a[i]=3*_int64(pow(2.0,i-1))-a[i-1];
后,终于变成ac了,以后使用pow函数时需要有所注意
相同的,sqrt的原型也是
double sqrt ( double x );
float sqrt ( float x );
long double sqrt ( long double x );