现在,在本次比赛的主页点击"排名",您就会看到本场比赛的榜单,可以看到,榜单中直接列出了本场比赛的所有题目。

现在,作为牛客老粉,炸鸡想用这道题给大家科普一下牛客以前榜单的愚蠢之处:

牛客以前的榜单并不是现在这样,而是至多同时只显示六道题目。同时榜单上还有"向左"按钮与"向右"按钮来切换显示的题目。以"向右"按钮为例,点击一次该按钮会显示接下来的六道题,特别的,如果接下来的六道题超出了总题数,则会将最后一题放到当前显示的最右侧。"向左"按钮同理。

现在,你需要回答,对于 n道题的一场比赛,显示的六道题目中最左侧的题目一共有几种可能取值。

以下面共 n=14道题的情况为例:

初始时,显示了 A 到 F;点击一次"向右",显示了 G 到 L;再点击一次"向右",此时由于剩余题数不足六题,显示的六道题是 I 到 N;此时不能继续点击"向右",点击一次"向左",显示的六道题是 C 到 H;再点击一次"向左",由于剩余题数不足六题,显示的六道题是 A 到 F。

上述过程中,显示的六道题中,最左侧的题目编号分别是 A、G、I、C、A,因此答案为 4。

输入格式

输入的第一行包括一个正整数 T (1 ≤ T ≤ 10^5),表示测试用例的组数。

每组测试用例输入一个正整数 n (6 ≤ n ≤ 10^9),表示本场比赛的总题目数。

输出格式

对每组测试用例,输出一个整数,表示显示的六道题目中最左侧的题目一共有几种可能取值。

输入样例:

2
14
6

输出样例:

4
1

题目分析

我们根据情况进行分类讨论:

  • 如果题目个数小于等于 6, 那么不能左移或右移, 最左边题目为 A。 只有一个。
  • 如果题目个数大于 6:
    • 如果题目个数能被 6 整除, 那么从最左边右移出现的最左侧题目和从最右边左移的是相同的。 有 n / 6
    • 如果题目个数不能被 6 整除, 那么我们可以发现,其中最左侧和最右侧的时候, 不管左移过程中还是右移过程中的最左侧题目都是相同的:
    • 右移过程: n / 6 + 1 个。
    • 左移过程: n / 6 + 1 个。
    • 所以, 一共会出现 (n / 6 + (bool)(n

代码实现

#include <iostream>
using namespace std;

int t, n, l, r;
int solve() {
    cin >> n;
    if(n <= 6) return 1;
    if(n
    return n / 6;
}
int main () {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> t;
    while(t--) cout << solve() << '\n';
    return 0;
}
分类: Thought

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

友情链接:Ctips' blog, Colza’s blog

站点状态:Status