2020 年的 CSP-J2 入门组试题挺适合拿来练练基本功的。题目设置比较亲民,尤其那个关于2 的正整数次幂拆分的逻辑题,蛮有意思,逻辑思维练得扎实。如果你是刚开始刷竞赛题,或者教小朋友打基础,这套题挺合适的。像“10 = 1 + 2 + 3 + 4”这种拆分,学生看了也不会觉得枯燥。
拆分条件还加了一点挑战,要求每个数都必须是2 的幂次,也就是像 1、2、4、8 这样的数字。其实只要理解什么叫“正整数个 2 相乘”,你基本就能理出规律来。写代码的时候,多用点位运算,效率也能提上去。
哦对了,想深入搞清楚快速幂或者指数运算的,下面这几篇文章还挺实用的:
- 详解快速幂算法,把思路讲得清楚,递归和迭代方式都有。
- 快速幂详解和代码实现 Python,适合用 Python 写算法题的朋友。
- 数与数组的指数幂-MATLAB2 教程,对数学底层概念也讲得比较细。
如果你最近在准备普及组或入门级竞赛,这套题和这些资源搭配着用,效率真的不低。练熟了,写起拆分类题目会轻松不少。