JZ64 求1+2+3+...+n
JZ64 求1+2+3+…+n
描述
求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
数据范围: $0<n≤200$
进阶: 空间复杂度 $O(1)$ ,时间复杂度 $O(n)$
示例1
1 | 输入:5 |
示例2
1 | 输入:1 |
题解
我冥思苦想想不到有什么trick,想到的办法都很麻烦,然后看了讨论才知道,原来牛魔的且运算也算位运算啊。回到这题,使用与运算的短路来递归计算即可(短路:$aandb$在确定a不成立的情况下不会计算b)。
代码
1 | # -*- coding:utf-8 -*- |