星星来啦 2024-03-30 20:54 采纳率: 70.6%
浏览 0
已结题

一个关于C++的问题

在 AtCoder 王国,一周由 A+B 天组成,其中第 1 天至第 A 天为节假日,第 (A+1) 天至第 (A+B) 天为工作日。
高桥有 N 个计划,第 i 个计划安排在 Di 天之后。
他忘记了今天是星期几。请判断他的 N 个计划是否可能都安排在节假日。
N 个计划都安排在节假日(1 <= n <= 2 * 10 ^ 5)

输入格式:
N A B
D1 D2 ... DN

样例输入1
3 2 5
1 2 9
样例输出1
Yes
样例输入2
2 5 10
10 15
样例输出2
No
样例输入3
4 347 347
347 700 705 710
样例输出3
Yes

帮我用C++做一下,谢谢各位!

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-03-30 20:54
    关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    下面是用C++实现的解决方案:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main() {
        int A, B, N;
        cin >> A >> B >> N;
    
        vector<int> D(N);
        for (int i = 0; i < N; i++) {
            cin >> D[i];
        }
    
        int totalDays = A + B;
        bool possible = true;
    
        for (int i = 0; i < N; i++) {
            int daysAfter = D[i] % totalDays;
            if (daysAfter == 0) {
                daysAfter = totalDays;
            }
            if (daysAfter <= A) {
                possible = false;
                break;
            }
        }
    
        if (possible) {
            cout << "Yes" << endl;
        } else {
            cout << "No" << endl;
        }
    
        return 0;
    }
    

    解决方案的思路如下:

    1. 输入A、B和N的值,分别表示节假日的天数、工作日的天数以及计划的个数。
    2. 创建一个大小为N的整数向量D,用于存储每个计划安排的天数。
    3. 计算总共的天数为A + B。
    4. 遍历每个计划,计算计划在多少天后进行。通过计算D[i] % totalDays得到计划在总天数之后的天数(余数)。
    5. 如果计划在总天数之后的天数小于等于A,表示计划无法在节假日安排,将可能的标志设为false并跳出循环。
    6. 根据可能的标志输出相应的结果。

    希望以上解决方案能对你有所帮助,如有任何问题,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月30日
  • 修改了问题 3月30日
  • 创建了问题 3月30日