表哥的面包
Problem:1142
Time Limit:1000ms
Memory Limit:65535K
Description
可爱的表哥遇到了一个问题,有一个长为N(1≤N≤10^18)的长条状面包,问最多可以切成几段,使得每段面包的长度互不相等且均不能围成三角形。
Input
第一行一个T(1≤T≤10),表示T组数据
接着T行,每行一个整数N(1≤N≤10^18)表示面包的长度
Output
输出可以分成的段数
Sample Input
1
6
Sample Output
3
Hint
可以分成三段,每段长度是1,2,3
Source
题解:斐波那契数列
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int i;
long long a[];
a[]=,a[]=;
for(i=;i<=;i++)
a[i]=a[i-]+a[i-];
for(i=;i<=;i++)
a[i]=a[i]+a[i-];
long long n,t;
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
// 是 互 不 相 等 不能出现两个1 永远也不能出现 不是2的时候不能出现
for(i=;i<=;i++)
{
if(a[i]>n)
break;
}
cout<<i-<<endl;
}
return ;
}