202301A Hello, 2023 题解

· · 题解

[语言月赛202301] Hello, 2023 题解

Source & Knowledge

2023 年 1 月语言月赛,由洛谷网校入门计划/基础计划提供。

文字题解

题目大意

给定一个整数 x,输出 x \bmod 2023 非负整数的值。

解析

注意到题目中提示,如果使用 C/C++ 语言中的取模运算符(\texttt{\%})对负数取模,将会得到一个负数作为结果。在这个负数结果上加上模数,得到的才是正确的取模结果。

因此我们可以使用 if 语句判断给定的 x 是否为负数,如果是则在取模后的负数结果上加上模数。

if (x < 0)
    printf("%d\n", ((x % 2023) + 2023));
else
    printf("%d\n", x % 2023);

除此之外,注意到如果「在取模后的结果上加上模数」后再次「取模一次」,无论 x 是否为负数,最终都可以得到正确结果。因此这里我们也可以直接这样处理。

printf("%d\n", ((x % 2023) + 2023) % 2023);

视频题解

完整代码请在视频中查看。