はまやんはまやんはまやん

hamayanhamayan's blog

9月X日 [パソコン甲子園2017 予選 C]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/PCK/Prelim/0359?year=2017

解法

https://onlinejudge.u-aizu.ac.jp/solutions/problem/0359/review/3136380/hamayanhamayan/C++14

9日が土曜日であると書いてあるので、土曜日になる日を考えてみる。
2,9,16,23,30日が土曜日になることがわかる。
この数の規則性は7で割ったときのあまりが2になるということである。
周期的な性質がある対象に対しては周期で割ったときのあまりで分類するのが効果的な方針である。
7で割ったときのあまりで分類すると、
「2→土曜」なので、「3→日曜」「4→月曜」「5→火曜」「6→水曜」「0→木曜」「1→金曜」となる。
実装しやすいように、配列に0から順番に対応する文字をいれておくと、簡単に実装が済む。

int X;
vector<string> month = { "thu", "fri", "sat", "sun", "mon", "tue","wed" };
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> X;
    cout << month[X % 7] << endl;
}