P7748 一道模拟题

· · 题解

Part 0

希望管理员大大通过呀~谢谢

Part 1 思路

我们注意题目,这道题有两个关键点,传到谁手上了,和现在的时间。我们可以用两个变量来存。当有答对时更新。

在这里,要注意:

1.原题中是一个圆桌,即传到第 8 个人时,会直接传到第 1 个人手中,会要特判。
2.如果某一时刻,时间 t 若大于等于 210 就立即结束,并输出编号。

Part 2 code

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int k, n;
    cin >> k >> n;
    int t;
    for (int i = 1; i <= n; i++)
    {
        int x;//答题时间
        char c;//是否答对
        cin >> x >> c;
        t += x;//时间叠加上答题时间
        if (t >= 210)
        {//如果时间超过,直接爆炸
            cout << k;
            return 0; 
        }
        else
        {
            if (c == 'T')
            {//如果答对,传到下一个人
                if (k == 8) k = 1;
                else k++;
                /*
                或利用循环队列的思路
                直接写:++k %= 7
                */
            }
            //没答对,继续回答
        }
    }
    return 0;
}

Part 3 AC picture