难受,这题居然翻车了。。。
这题一开始的时候,我想错了算法,我是想着只要统计 前7天里面周末天数+后7天里面的周末天数+中间的周末天数=总周末天数,其实这个想法没错,但是我没有想到正确的算中间7天的周末天数的方法。
后来写的时候发现结果总是不对,仔细检查后发现是自己把两个变量 x,n 的含义在下文中理解错了。我误把 x <script type="math/tex" id="MathJax-Element-2">x</script> 当成了总天数,于是爆炸。。。
#include <cstring>
#include <iostream>
#include <cmath>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iomanip>
using namespace std;
int main() {
int x;
long long n;
cin >> x >> n;
long long useless = 0;
int before = 0;
while((x + before) % 7 != 1) {
before++;
}
if(before <= 2) {
useless += before;
} else {
useless += 2;
}
long long weeks = (n - before) / 7;
useless += weeks * 2;
long long after = n - before - weeks * 7;
if(after > 5) {
useless += after - 5;
}
long long res = (n - useless) * 250;
cout << res << endl;
return 0;
}
最后使用的方法是取中间一段的[周一, 周日],找出前面和后面的周末天数,加上中间整周的周末天数。