喵~ 各位主人和小伙伴们好呀,这里是你们最爱的小猫娘!今天我们要来解决一个超级经典又可爱的入门问题,Codeforces 上的 4A 题——西瓜 (Watermelon)!(ฅ'ω'ฅ)
这道题就像一个甜甜的西瓜一样,简单又解渴,最适合刚开始刷题的你了喵~ 废话不多说,我们开始吧!
题目大意
炎热的夏天,Pete 和 Billy 两个好朋友买了一个大西瓜,称了一下足足有 w
公斤重。他们都超级喜欢偶数,所以想把西瓜切成 两块,而且 每一块的重量都必须是正偶数公斤 才行!注意哦,这两块不要求一样重。
他们太累太渴啦,想快点吃到瓜,所以就拜托我们来帮忙判断一下,到底能不能这么分呢?如果可以,就告诉他们 YES
,不然就说 NO
啦~
简单来说就是:给你一个整数 w
(1 ≤ w ≤ 100),判断它能否被拆成两个正偶数之和。
题解方法
这个问题其实超简单的哦,让本喵来给你分析一下吧~ (´,,•ω•,,)♡
- 首先,我们假设西瓜被分成了
a
公斤和b
公斤两块,那么肯定有a + b = w
,对吧? - 题目要求这两块都得有重量,所以
a > 0
并且b > 0
。 - 最最关键的一点来啦!
a
和b
都必须是 偶数! - 我们来想想,一个偶数加上另一个偶数,结果会是什么呢?喵~ 答案是... 还是一个偶数! (比如 2+4=6, 6+8=14)
- 所以呀,既然
a
和b
都是偶数,那它们的总和w
也必须是一个偶数才行!如果w
是个奇数(比如 5、7),那肯定没办法分成两个偶数部分,直接说NO
就好啦。 - 那是不是所有偶数都可以呢?我们再想想哦~
- 因为
a
和b
都必须是 正 偶数,所以它们最小也得是 2 公斤吧?那么两块加起来,总重量w
最小也得是2 + 2 = 4
公斤! - 所以,如果西瓜的总重量
w
是 2 公斤,虽然 2 是偶数,但它只能分成1+1
,两个 1 都是奇数,不满足条件呢。所以w=2
的情况也是NO
哦。
总结一下我们的发现就是:西瓜的总重量 w
必须是一个大于 2 的偶数,才能成功分给两个小朋友!是不是很简单喵?
题解
根据上面的思路,代码就非常清晰啦,看这里看这里~
#include <iostream>
int main() {
// 为了让输入输出更快一点,是个好习惯喵~
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
int w; // 用来存放西瓜的重量 w
std::cin >> w; // 把重量读进来
// 我们的核心逻辑来啦!
// w > 2 保证了总重量至少是 4
// w % 2 == 0 保证了总重量是偶数
// 只有同时满足这两个条件,才能分成两个正偶数的部分
if (w > 2 && w % 2 == 0) {
std::cout << "YES\n"; // 可以分!
} else {
std::cout << "NO\n"; // 不可以分哦~
}
return 0; // 程序结束啦
}
知识点介绍
这道题主要用到了一个超基础但超重要的数学概念——奇偶性 (Parity) 的说!
什么是偶数 (Even Number)? 能被 2 整除的整数就是偶数啦,比如 0, 2, 4, -2, -8 等等。在程序里,我们通常用
x % 2 == 0
来判断一个数x
是不是偶数。什么是奇数 (Odd Number)? 不能被 2 整除的整数就是奇数,比如 1, 3, 5, -1, -7。判断方法就是
x % 2 != 0
或者x % 2 == 1
(对于正数)。奇偶性的运算性质,记住这些会很有用哦:
偶数 + 偶数 = 偶数
(就像题目里的a+b=w
)奇数 + 奇数 = 偶数
偶数 + 奇数 = 奇数
正是因为 偶数 + 偶数 = 偶数
这个性质,我们才能快速判断出,如果总重量 w
是奇数,那就绝对不可能满足题目要求啦。这个小知识点在很多问题里都有用武之地,要记牢哦~
好啦~ 这道可爱的西瓜问题就解决啦!是不是感觉很简单,又学到了一点点东西呢?希望我的讲解对你有帮助哦!下次再见啦,喵~ ( ^_^ )/~~