NEFU 1142 表哥的面包

表哥的面包

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[105];
    a[1]=1,a[2]=2;
    for(i=3;i<=90;i++)
    a[i]=a[i-1]+a[i-2];
    for(i=2;i<=90;i++)
    a[i]=a[i]+a[i-1];
    long long n,t;
    scanf("%lld",&t);
    while(t--)
    {
        scanf("%lld",&n);
// 是 互 不 相 等  不能出现两个1 永远也不能出现 不是2的时候不能出现
        for(i=1;i<=90;i++)
        {
            if(a[i]>n)
            break;
        }
        cout<<i-1<<endl;
    }
    return 0;
}
原文地址:https://www.cnblogs.com/Ritchie/p/5416130.html