酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

健身打卡最少额外打卡次数计算问题及代码实现

```cpp #include <iostream> #include <vector> using namespace std; int main() { int n, k; cin >> n >> k; int c; cin >> c; vector<int> compulsory_days(c); for (int i = 0; i < c; ++i) { cin >> compulsory_days[i]; } // 定义变量prcl用于存储最少额外打卡次数 int prcl = 0; int last_day = 0; int index = 0; for (int day = 1; day <= n; ++day) { if (index < c && day == compulsory_days[index]) { last_day = day; index++; } else if (day - last_day == k) { prcl++; last_day = day; } } cout << prcl << endl; return 0; } ``` ### 代码解释 1. **输入读取**:首先读取总天数`n`和间隔天数`k`,接着读取强制打卡日的个数`c`,再读取`c`个强制打卡日的日期并存储在`compulsory_days`向量中。 2. **打卡情况处理**:使用`last_day`记录上一次打卡的日期,初始为 0(第 0 天已打卡),`index`用于遍历强制打卡日列表。从第 1 天开始遍历到第`n`天,如果当天是强制打卡日,更新`last_day`并将`index`加 1;如果距离上一次打卡已经达到`k`天,额外打卡一次,更新`last_day`。 3. **输出结果**:最后输出最少额外打卡次数`prcl`。 ######[AI问答 | 425点数解答 | 2026-07-11 20:58:00]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]