版权声明:版权所有,转载请标明博文出处。 https://blog.csdn.net/HQG_AC/article/details/84526702
思路:不要只往人数上想,可以往场数上想:
赢 1 把: 至少要 2 个人。
2把:至少要 3个人。
3把:至少为 至少2把的人数+至少1把的人数。
4把:至少为 至少3把的+至少2把的(因为比赛次数差不能超过1)。
i 把:f[i-1]+f[i-2];
斐波那契数列很大,所以把f[i]全部算出找就行。
#include <bits/stdc++.h>
using namespace std ;
typedef long long ll ;
ll n ;
int main(){
scanf("%lld", &n) ;
ll ans = 1, a = 1, b = 2, c = a + b ;
while (c <= n) {
a = b ;
b = c ;
c = a + b ;
ans++ ;
}
printf("%lld\n", ans) ;
}