[Luogu] P9765 题解
P9765 题解
本题一大坑点就在于变量的输入顺序和题目描述中的顺序是不一样的,警钟撅烂。
题意就是说求 \(k\) 年 \(j\) 月 \(i\) 日对应星期几。我们可以计算从 \(1\) 年 \(1\) 月 \(1\) 日 到 \(k\) 年 \(j\) 月 \(i\) 日一共经过的天数,即 \(d \times m \times (k - 1) + (j - 1) \times d + i - 1\)。因为是求星期几,而一周有 \(w\) 天,于是对应的星期就是天数 $ \bmod w$,最后加上 \(\text{a}\) 的 ASCII 值即可。
总的来说,就是求
\[(dm(k - 1) + d(j - 1) + i - 1 ) \bmod w + 97
\]
并以字符形式输出。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll d, m, w, i, j, k;
int main() {
scanf("%lld %lld %lld %lld %lld %lld", &d, &m, &w, &i, &j, &k);
ll ans = (d * m * (k - 1) + (j - 1) * d + i - 1) % w;
printf("%c", char(ans + 97));
return 0;
}

浙公网安备 33010602011771号