HDU 5620 KK's Steel 斐波那契

题意:一根棍子劈成n段,每段不一样长度,任意三个不能组成三角形,问n的最大值。


想法:最好的情况就是k-th等于(k-a)-th+(k-b)-th,联想到斐波那契数列。求个数就好了。


#include<stdio.h>
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		__int64 sum=3,n,res;
		scanf("%I64d",&n);
		__int64 f[100];
		f[1]=1;f[2]=2;
		if(n==1||n==2)
		{
			printf("1\n");
			continue;
		}
		for(int i=3;i<=100;i++)
		{
			f[i]=f[i-1]+f[i-2];
			sum+=f[i];
			if(sum>n)
			{
				res=i-1;break;
			}
		}
		printf("%I64d\n",res);
	}
	return 0;
} 

你可能感兴趣的:(HDU 5620 KK's Steel 斐波那契)