题解 CF735C 【Tennis Championship】

版权声明:版权所有,转载请标明博文出处。 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) ;
}

猜你喜欢

转载自blog.csdn.net/HQG_AC/article/details/84526702