Skip to content

喵~ 各位主人和小伙伴们好呀,这里是你们最爱的小猫娘!今天我们要来解决一个超级经典又可爱的入门问题,Codeforces 上的 4A 题——西瓜 (Watermelon)!(ฅ'ω'ฅ)

这道题就像一个甜甜的西瓜一样,简单又解渴,最适合刚开始刷题的你了喵~ 废话不多说,我们开始吧!

题目大意

炎热的夏天,Pete 和 Billy 两个好朋友买了一个大西瓜,称了一下足足有 w 公斤重。他们都超级喜欢偶数,所以想把西瓜切成 两块,而且 每一块的重量都必须是正偶数公斤 才行!注意哦,这两块不要求一样重。

他们太累太渴啦,想快点吃到瓜,所以就拜托我们来帮忙判断一下,到底能不能这么分呢?如果可以,就告诉他们 YES,不然就说 NO 啦~

简单来说就是:给你一个整数 w (1 ≤ w ≤ 100),判断它能否被拆成两个正偶数之和。

题解方法

这个问题其实超简单的哦,让本喵来给你分析一下吧~ (´,,•ω•,,)♡

  1. 首先,我们假设西瓜被分成了 a 公斤和 b 公斤两块,那么肯定有 a + b = w,对吧?
  2. 题目要求这两块都得有重量,所以 a > 0 并且 b > 0
  3. 最最关键的一点来啦!ab 都必须是 偶数
  4. 我们来想想,一个偶数加上另一个偶数,结果会是什么呢?喵~ 答案是... 还是一个偶数! (比如 2+4=6, 6+8=14)
  5. 所以呀,既然 ab 都是偶数,那它们的总和 w 也必须是一个偶数才行!如果 w 是个奇数(比如 5、7),那肯定没办法分成两个偶数部分,直接说 NO 就好啦。
  6. 那是不是所有偶数都可以呢?我们再想想哦~
  7. 因为 ab 都必须是 偶数,所以它们最小也得是 2 公斤吧?那么两块加起来,总重量 w 最小也得是 2 + 2 = 4 公斤!
  8. 所以,如果西瓜的总重量 w 是 2 公斤,虽然 2 是偶数,但它只能分成 1+1,两个 1 都是奇数,不满足条件呢。所以 w=2 的情况也是 NO 哦。

总结一下我们的发现就是:西瓜的总重量 w 必须是一个大于 2 的偶数,才能成功分给两个小朋友!是不是很简单喵?

题解

根据上面的思路,代码就非常清晰啦,看这里看这里~

cpp
#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 是奇数,那就绝对不可能满足题目要求啦。这个小知识点在很多问题里都有用武之地,要记牢哦~

好啦~ 这道可爱的西瓜问题就解决啦!是不是感觉很简单,又学到了一点点东西呢?希望我的讲解对你有帮助哦!下次再见啦,喵~ ( ^_^ )/~~

Released under the MIT License.