【LeetCode - 每日1题】鲜花游戏
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵目录🌵
- 难度 ⭐⭐⭐
- ✅ 题目回顾
- ✅ 解题思路
-
- 🍒 核心逻辑
- 🍅数学推导
- 🍎奇偶分类验证
- ✅ 代码实现
- ✅ 代码说明
- ✅ 复杂度分析
- ✅ 测试用例验证
-
- ✅ 示例 1:n=3, m=2
- ✅ 示例 2:n=1, m=1
- ✅ 总结
- 🤝 期待与你共同进步
- 📚 参考文档
难度 ⭐⭐⭐
✅ 题目回顾
Alice 和 Bob 在环形草地上进行鲜花采摘游戏。Alice 到 Bob 顺时针有 x 朵鲜花,逆时针有 y 朵鲜花。Alice 先手,每回合玩家必须选择顺时针或逆时针方向采摘一朵鲜花。当所有鲜花被摘完时,当前行动玩家获胜。任务是在 x∈[1,n] 和 y∈[1,m] 范围内,找出所有 Alice 必胜的 (x,y) 对的数量。
✅ 解题思路
🍒 核心逻辑
游戏胜负取决于总鲜花数 x+y 的奇偶性:
- 若 x+y 为奇数:Alice(先手)会进行最后一回合并获胜
- 若 x+y 为偶数:Bob(后手)会进行最后一回合并获胜
因此 Alice 必胜的条件简化为:x+y 为奇数
🍅数学推导
在 [1,n]×[1,m] 的二维网格中:
- 总点数:n × m
- x+y 为奇数的点:当于国际象棋棋盘中的"黑格"
- 数学性质:无论 n,m 奇偶性如何,黑格数量恒为 ⌊n·m/2⌋
🍎奇偶分类验证
-
计算 [1,n] 中:
- 奇数数量:odd_n = (n+1)//2
- 偶数数量:even_n = n//2