杭电5914

Triangle

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

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.

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

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

题目大意
有n根长度为1~N的两两不同长度的木棍,若要使其任意三根组合不能构成三角形,求最少需要取走的木棍的数量。

按照斐波那契数列进行筛选,凡不属于斐波那契数的都剔除

#include
int main()
{
    int T, i, j, n, s[6]={1, 2, 3, 5, 8, 13};
    scanf("%d", &T);
    for (i=0; i"%d", &n);
        for (j=0; j<6; j++) {
            if (n<s[j]) {
                break;
            }
        }
        printf("Case #%d: %d\n", i+1, n-j);
    }
    return 0;
}

你可能感兴趣的:(acm入门429)