每到星期四,zy就像让别人给他50 块钱去吃肯德基,而Belmaxi是个大善人,为了能让zy吃到肯德基,他给zy设计了这样一个游戏: 第一天是星期四。接下来的几天里(包括第一天),zy每天上午8点坚持给Belmaxi发5 块钱大红包,每到星期四晚上 23:59,Belmaxi就会检查一下,zy是否在此时之前连续7天(包括周四当天)都给他发了红包,如果是,那么Belmaxi就是发给zy一个价值50元的红包;否则Belmaxi只会给zy发一句嘲讽。 经历了 n 天之后,Belmaxi 翻了聊天记录 Belmaxi 知道哪些天,zy 忘记发他 5 块钱,他现在给出 zy 忘记发钱的所有日期。Belmaxi 想知道自己的盈亏情况。 Input 第一行一个整数T,(T≤103) 每个样例第一行两个整数n,(n≤1016) ,x,(x≤105),表示经过了n天,有x 天zy忘记给钱了 接下来一行x 个整数 ai,表示zy在第 ai 天忘记发红包了,保证 ai 按照升序给出。c++
时间: 2024-04-17 12:29:02 浏览: 12
这个问题涉及到Belmaxi在一段时间内是否收到连续7天的红包,以及zy忘记发红包的日期。我们可以通过计算Belmaxi收到的红包天数和zy忘记发红包的天数来确定盈亏情况。
首先,初始化Belmaxi收到的红包天数为0,忘记发红包的天数为0。
然后,遍历zy忘记发红包的日期列表,对于每个忘记发红包的日期,检查是否满足连续7天没有忘记发红包。如果满足,则Belmaxi收到的红包天数增加7,否则忘记发红包的天数增加1。
最后,计算Belmaxi的盈亏情况。盈亏金额 = 收到的红包天数 * 50 - 忘记发红包的天数 * 5。
下面是C++的示例代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
int main() {
int T;
cin >> T;
for (int t = 0; t < T; t++) {
long long n, x;
cin >> n >> x;
vector<long long> forgetDays(x);
for (int i = 0; i < x; i++) {
cin >> forgetDays[i];
}
long long receivedDays = 0;
long long forgetCount = 0;
for (int i = 0; i < x; i++) {
if (i >= 6 && forgetDays[i] - forgetDays[i-6] <= 6) {
receivedDays += 7;
} else {
forgetCount++;
}
}
long long profitLoss = receivedDays * 50 - forgetCount * 5;
cout << profitLoss << endl;
}
return 0;
}
```
希望对你有所帮助!如有疑问,请随时提出。