题解:P1424 小鱼的航程(改进版)

· · 题解

思路

小鱼游了 n 天,显然,这 n 天可以分为若干个整天以及若干个整周。“整周”指周一到周日所构成的完整一周。

而输入又给出了一个 x,指的是开始时是星期几。那我们把前面的非整周暴力枚举,后面的整周整体计算,最后剩余的若干天再单独计算并且加入答案即可。

具体实现请看下面代码。

代码

#include <iostream>
using namespace std;

int main() {
    int x, n; cin >> x >> n; int ans = 0;
    for(; x <= 7; x++) {// 枚举到第一个周日
        if(x <= 5) ans++;
        n--;
    }
    ans += n / 7 * 5; // 有 n / 7 个整周,剩余 n % 7 天,共 n / 7 * 5 个工作日
    n %= 7;
    if(n == 6) n--;  // 细节,n %= 7 后 1 <= n <= 6,若 n = 6,会多出一个周六,这个不能计算进去
    ans += n;
    cout << ans * 250; // 我们计算的是没有 * 250 的,要记得乘上
    return 0;
}