洛谷 P1720: 月落乌啼算钱(斐波那契数列)思路 和 C++ 题解

洛谷 P1720: 月落乌啼算钱(斐波那契数列)

第 4 篇 CSDN!

P1720: 月落乌啼算钱(斐波那契数列)

这道题把斐波那契数列写在你脸上了,所以… 我们不用斐波那契数列,抛弃所有的递归和递推!

我们可以设 a = ( 1 + 5 2 ) n a=(\frac{1+\sqrt{5}}{2})^n a=(21+5 )n, b = ( 1 − 5 2 ) n b=(\frac{1-\sqrt{5}}{2})^n b=(215 )n,那么 F n = a − b 5 F_n=\frac{a-b}{\sqrt{5}} Fn=5 ab,还是非常好写的。

所以,上代码!

#include 
using namespace std;

int n;
int main() {
	cin >> n;
	long double a = pow((1 + sqrt(5)) / 2, n), b = pow((1 - sqrt(5)) / 2, n);
	printf("%.2Lf", (a - b) / sqrt(5));
}

声明一下:在 C 语言中,要想为 l o n g   d o u b l e long\ double long double 类型保留 2 2 2 位小数,就可以使用上面的输出语句,对应的 C++ 代码为:

#include 
using namespace std;

int main() {
	long double a = 3.1415926;
	int x = 3;
	cout << fixed << setprecision(x) << a;
}

其中 a a a 是要保留的数字, x x x 是要保留的位数,运行代码得到 3.141 3.141 3.141

总结:
p o w ( n , x ) pow(n,x) pow(n,x) n x n^x nx
s q r t ( x ) sqrt(x) sqrt(x) x \sqrt{x} x

你可能感兴趣的:(c++,算法,开发语言)