在做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 );