题意:
给出一个数n,代表有n个木棒,问最少去掉几根,使得剩下的木棒都构不成三角形。
分析:
比赛的时候还是没有找出规律,这其实就是个用菲波那切数列筛选数字的题,例如:1+2=3;2和3之间没有数字;2+3=5,3和5之间把4去掉;3+5=8;把6和7去掉,以此类推。
因为n才20,非常小,所以得出去掉的数字序列为4,6,7,9,10,11,12,14,15,16,17,18,19,20;
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<vector>
#include<set>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
int main()
{
int t;
scanf("%d",&t);
int kase=0;
int res[21]={0,0,0,0,1,1,2,3,3,4,5,6,7,7,8,9,10,11,12,13,14};
while(t--)
{
int n;
scanf("%d",&n);
kase++;
printf("Case #%d: %d\n",kase,res[n]);
}
}