Codeforces Round #382 (Div. 2) C

来源:互联网 发布:大数据掌握的技术 编辑:程序博客网 时间:2024/05/18 13:47

题意 有n个人进行两两对抗的比赛,问冠军最后最多可以打几场要求对战的人胜场差距不能大于1.

我们可以得到战一场至少需要2个人,战两场至少需要3个人。
那么如果需要战三场,就需要一个战胜了两场的和一个战胜了一场的就需要5个人
所以得到了递推式
a[i]=a[i-1]+a[i-2];
斐波那契;直接上代码ac

#include<stdio.h>#include<string.h>int main(){    long long a[150];    a[1]=2;a[2]=3;    for(int i=3;i<=86;i++)    a[i]=a[i-1]+a[i-2];    long long b;    scanf("%lld",&b);    for(int i=1;i<=86;i++)    if(a[i]>b)    {    printf("%d\n",i-1);    break;    }}
0 0
原创粉丝点击