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, 3⋯n
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.
any three of the remaining sticks.
Input
The first line contains only one integer T (T), which indicates the number of test cases.
For each test case, there is only one line describing the given integer n (1≤n≤20).
For each test case, there is only one line describing the given integer n (1≤n≤20).
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 ",t++,ans[n-1]); } return 0; }