NSOqwq

题解 CF1475B 【New Year's Number】

Codeforces Round #697 (Div.3) B 题解

题目大意

能否将一个数拆分成若干个 $2020$ 和若干个 $2021$ 的和。

做法

假如将这个数 $x$ 全拆成 $2020$。

那么可以拆成 $\lfloor \dfrac x {2020} \rfloor$ 个 $2020$,会有一个余数,设这个余数为 $r$。

那么,要把这个余数消掉,就只能把 $r$ 个 $2020$ 改成 $2021$ 了。

但这不一定行,如果 $r > \lfloor \dfrac x {2020} \rfloor$ 的话就会出错。

所以,当 $r \leq \lfloor \dfrac x {2020} \rfloor$ 时,输出 YES。否则输出 NO

Code

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <vector>
int t;
int x;
int main() {
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &x);
        int a = x / 2020;
        int r = x % 2020;
        if (r <= a) {
            printf("YES\n");
        } else {
            printf("NO\n");
        }
    }
    return 0;
}

2021-01-26 07:39:12 in 题解