AOJ 1179: ミレニアム / Millennium

,

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1179

yとかmとかdが混乱してバグらせるので注意。すぐに修正できるとはいえ、私も友人もやらかした。

solution

やるだけ。$O(YM)$でひと月ずつ増やしていけばよい。

implementation

#include <cstdio>

int days_of_month(int y, int m) {
    return y % 3 == 0 or m % 2 == 1 ? 20 : 19;
}
int main() {
    int n; scanf("%d", &n);
    while (n --) {
        int y, m, d; scanf("%d%d%d", &y, &m, &d);
        int result = 0;
        result += days_of_month(y, m) - d;
        ++ m;
        for (; y < 1000; ++ y) {
            for (; m <= 10; ++ m) {
                result += days_of_month(y, m);
            }
            m = 1;
        }
        result += 1;
        printf("%d\n", result);
    }
    return 0;
}