hpuoj1006 思维

1006: 机房的位置(二) [思维]

时间限制: 1 Sec 内存限制: 128 MB

提交: 941 解决: 302 统计

题目描述

机房里面有一排大佬专座,这一排共有NN个位置,已知任意两个大佬之间必须空有至少一个位置。问最少需要多少个大佬可以完全占用这NN个位置使得不会有任何人入座。

输入

第一行输入一个整数TT,代表有TT组测试数据。

每组数据输入一个整数NN,代表有NN个位置。

注:1<=T<=1000,1<=N<=1091<=T<=1000,1<=N<=109。

输出

对每组测试数据,输出一个整数代表最少需要的人数。

样例输入

2
1
3

样例输出

1
1

思路:

我们考虑一下6个位置时最少需几个dalao,-- | --  --  | --,很明显只需要两个就够了,这样我们发现左边和右边必须要只留一个位置才能无法插入,而中间两个dalao之间可以空出两个位置,我们把左侧的那个空位放到右侧,就形成了周期为3的循环,于是我们得出的答案是ans = n / 3,但是如果n % 3有余数是要+1的,因为两侧最多只能空出一个空位

代码:

#include<cstdio>
using namespace std;
int main()
{
    int t,n;
    scanf("%d",&t);
    while (t --)
    {
        scanf("%d",&n);
        printf("%d\n",n / 3 + (n % 3 ? 1 : 0));
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/cloudy_happy/article/details/83791980