大体题意:
n 个人进行比赛,问你一个做多打多少场比赛? 两个人进行比赛,它们比赛场次之差不差过1,否则不能打,一旦一个人打比赛输了,就不能继续往后打了!
思路:
很水的一道题目,想复杂了!
其实是一个找规律的题目。
当你写出几个数据来后,就能猜出来了:
2 3 4 5 6 7 8 9 10 11 12 13
1 2 2 3 3 3 4 4 4 4 4 5
下面同一类的个数 恰好构成斐波那契数列!
详细见代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[100];
void init(){
a[1] = 1;
a[2] = 2;
for (int i = 3; i <= 100; ++i) a[i] = a[i-1] + a[i-2];
}
int main(){
ll n;
init();
while(~scanf("%lld",&n)){
ll sum = 0;
--n;
for (int i = 1; i <= 100; ++i){
sum += a[i];
if (sum >= n) {
printf("%d\n",i);
break;
}
}
}
return 0;
}