Triangle

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

Total Submission(s): 1057    Accepted Submission(s): 656


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

 

 

//题意, n 个数, 1-n 现要使任意三个数作为三角形三条边都不能成功,问至少需要删除几个数

//认真的模拟算了算,发现就是斐波那契数列。。。能保留下来的数是 1,2,3,5,8,13,21 ... ...

干脆打表过

#include <iostream>
#include <cstdio>
using namespace std;

int cnt, x, cas;
int ans[25]={0,0,0,0,1,1,2,3,3,4,5,
6,7,7,8,9,10,11,12,13,14};

int main()
{
    scanf("%d", &cas);
    for(int i=1;i<=cas;i++){
        scanf("%d", &x);
        printf("Case #%d: %d\n", i, ans[x]);
    }
    return 0;
}
View Code

 

posted @ 2017-05-11 19:26  happy_codes  阅读(125)  评论(0编辑  收藏  举报