ZCMU-1461-天坑的绳子

来源:互联网 发布:免费洗车软件排名 编辑:程序博客网 时间:2024/05/06 15:55

1461: 天坑的绳子

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 119  Solved: 71
[Submit][Status][Web Board]

Description

天坑有一条长度为n的绳子,天坑想要把这条绳子切成尽可能多的段,并且每段的长度必须为大于等于1的整数而且任意三段绳子都不能组成三角形。请问最多能切几段?

Input

测试文件的第一行有一个正整数T,代表一共有T组测试数据。
每组测试数据的第一行为一个正整数n(1<=n<=100000000)。

Output

对于每组测试数据,输出对应的答案。

Sample Input

3
1
2
4

Sample Output

1
2
3

【解析】
其实这道题大家可以找下规律,就是要求切多少段,每三段都不能组成三角形,其实我们列出前几个也就可以知道
其实和斐波那契数列有关,前两个之和等于第三边不能构成三角形,而且后面的一定比前面的大所以肯定不能构成
三角形,那我们就可以用绳子的长度不断的减去斐波那契数列,直到绳子剩下的长度比斐波那契数列小的时候再停
下就可以了。
#include<iostream>#include<cstring>#include<string>#include<cstdio>using namespace std;int main(){    int t,i;    long long n,a[110],count1;    a[0]=1,a[1]=1;    for(i=2;i<110;i++)    {        a[i]=a[i-1]+a[i-2];    }    scanf("%d",&t);    while(t--)    {        count1=0;        scanf("%lld",&n);        for(i=0;;i++)        {            if(n-a[i]<0)            break;            n=n-a[i];            count1++;        }        printf("%lld\n",count1);    }    return 0;}

0 0