[语言月赛202307] 数字判断 题解

· · 题解

[语言月赛202307] 数字判断 题解

Source & Knowledge

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

本题考察分支结构和简单数学推导。

文字题解

题目大意

给定三个整数 a, b, c,请你判断它们是否满足如下所有条件:

如果上述条件均满足,请输出 \texttt{Yes},否则输出 \texttt{No}

0 \leq a, b, c < 2^{31}

解析

读入

定义三个变量 a,b,c。注意到 a,b,c < 2^{31},即可以使用 int 存储。但是接下来我们需要计算三个数字的和,这个和会超过 int 能存储的范围,所以选择使用 long long 来定义 a,b,c

long long a, b, c;
cin >> a >> b >> c;

判定

可以用一个 bool 变量 ans 来存储是否满足全部条件。初始时,ans 为真。

【条件 1】 求和即可。

if (a + b + c > 100) ans = false;

【条件 2】 可以用取余运算符来求 b 除以五的余数。当余数为 0 时,说明 b5 的倍数,反之不是。

if (b % 5 != 0) ans = false;

【条件 3】 同理。

if (c % 7 != 0) ans = false;

【条件 4】 做减法即可。

if (a - b <= b - c) ans = false;

输出

如果 ans 为真,说明四个条件均满足,输出 \texttt{Yes},否则输出 \texttt{No}

if (ans) cout << "Yes\n";
else cout << "No\n";

视频题解