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

hamayanhamayan's blog

一般化うるう年 [ACM-ICPC JAG 模擬国内予選 2018年 B]

https://onlinejudge.u-aizu.ac.jp/challenges/sources/JAG/Prelim/2882

解法

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

[L,R]のすべての数について一般化うるう年かを判定すればいい。
N個の判定途中で一般化うるう年かどうかの判定ができる場合があるので、
判定は関数として分けておくと良い。

int N, L, R, A[50];
//---------------------------------------------------------------------------------------------------
int check(int x) {
    rep(i, 0, N) if (x % A[i] == 0) {
        if (i % 2 == 0) return 1;
        else return 0;
    }

    if (N % 2 == 1) return 0;
    else return 1;
}
//---------------------------------------------------------------------------------------------------
void _main() {
    while (cin >> N >> L >> R) {
        if (N == 0) return;
        rep(i, 0, N) cin >> A[i];

        int ans = 0;
        rep(i, L, R + 1) ans += check(i);
        printf("%d\n", ans);
    }
}