hdu 5914(斐波拉契数列)

Triangle

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 127    Accepted Submission(s): 89


Problem Description
Mr. Frog has n sticks, whose lengths are 1,2, 3n respectively. Wallice is a bad man, so he does not want Mr. Frog to form a triangle with three of the sticks here. He decides to steal some sticks! Output the minimal number of sticks he should steal so that Mr. Frog cannot form a triangle with
any three of the remaining sticks.
 

 

Input
The first line contains only one integer T (T20), which indicates the number of test cases.

For each test case, there is only one line describing the given integer n (1n20).
 

 

Output
For each test case, output one line “Case #x: y”, where x is the case number (starting from 1), y is the minimal number of sticks Wallice should steal.
 

 

Sample Input
3 4 5 6
 

 

Sample Output
Case #1: 1 Case #2: 1 Case #3: 2
 

 

Source
 
 
题意:给出 1 - n 根木棍,问最少去掉多少根使其余的不能组成三角形..
强行 DFS...后面看别人说的只要剩下的全部是斐波拉契数列的项就可以了..
#include <bits/stdc++.h>
using namespace std;
map<int ,int> value;
int ans[] = {0,0,0,1,1,2,3,3,4,5,6,7,7,8,9,10,11,12,13,14};
int main()
{
    int tcase,t=1;
    scanf("%d",&tcase);
    while(tcase--){
        int n;
        scanf("%d",&n);
        printf("Case #%d: %d\n",t++,ans[n-1]);
    }
    return 0;
}

 

 
 
posted @ 2016-10-04 21:57  樱花庄的龙之介大人  阅读(258)  评论(0编辑  收藏  举报