洛谷P1720 月落烏啼算錢
阿新 • • 發佈:2018-11-08
入門難度的水題,適合各位打表食用。
別問我為啥做入門難度的題,(因為我懶
法一:直接根據題意給出的公式模擬即可。
特殊技巧:使用cmath庫中的pow函式,該函式為pow(a,b),返回a的b次方,型別為浮點型別。
Code:
#include<iostream> #include<cmath> #include<cstdio> using namespace std; int n; inline double calc(double n){ return (pow(((1+sqrt(5))/2),n)-pow(((1-sqrt(5))/2),n))/sqrt(5); } int main(){ cin>>n; printf("%.2lf",calc(n)); return 0; }
法二:觀察公式。
分別帶入N=1,2,3,4,5發現這就是個斐波那契數列。還是個裸的。
Code:
#include<iostream> #include<cstdio> #include<cmath> #define ll long long using namespace std; int f[10000],n; int main(){ cin>>n; f[1]=1; f[0]=0;for(int i=2;i<=n;i++){ f[i]=f[i-1]+f[i-2]; } cout<<f[n]<<".00"; return 0; }
還沒完!你會發現這個程式碼WA了一個點,這是為什麼呢?
懷疑是不是卡了我double的精度?
再試試!
Code:(AC)
#include<iostream> #include<cstdio> #include<cmath> #define ll long long using namespace std; double f[10000];int n; int main(){ cin>>n; f[1]=1; f[0]=0; for(int i=2;i<=n;i++){ f[i]=f[i-1]+f[i-2]; } printf("%.2lf",f[n]); return 0; }