题意 有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;
}
}