Triangle HDU - 5914
Posted Jozky86
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Triangle HDU - 5914相关的知识,希望对你有一定的参考价值。
题意:
有长度分别是1到n的n给木棍,问最少拿走几个木棍,使得剩下木棍无法组成三角形
题解:
组不成三角形的恰巧情况就是a+b<=c,也就是我们要让剩下的木棍,两者之和等于或小于第三个,有没有联想到斐波那契数列,因为斐波那契数列是两者之和等于第三个,也就是给你一共n,看小于n有多少个斐波那契数列数,就是剩余的数量
代码:
#include<bits/stdc++.h>
#define debug(a,b) printf("%s = %d\\n",a,b);
typedef long long ll;
using namespace std;
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();//s=(s<<3)+(s<<1)+(ch^48);
return s*w;
}
const int maxn=40;
ll f[maxn];
int main()
{
int t;
f[0]=f[1]=1;
for(int i=2;i<=80;i++)f[i]=f[i-1]+f[i-2];
cin>>t;
int tot=0;
while(t--){
int n;
cin>>n;
int ans=0;
for(int i=1;i<80;i++){
if(f[i]<=n)ans++;
}
printf("Case #%d: %d\\n",++tot,n-ans);
}
}
/*
1 2 3 4 5 6
*/
以上是关于Triangle HDU - 5914的主要内容,如果未能解决你的问题,请参考以下文章
CCPC2016长春D (hdu 5914 Triangle)