bit check solution

求1+2+3+...+n

http://www.nowcoder.com/questionTerminal/7a0da8fc483247ff8800059e12d7caf1

【bit check solution】求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
Steps:
    1. 提取最后一个bit作为奇偶数标志位
    2. tmp存储前偶数个数字的和
    3. 最后加上n(奇数情况) or 0(偶数情况)

 奇数情况:1 + 2 + 3 + 4 + 5  --> (1 + 2 + 3 + 4) + 5 * 1
 偶数情况:1 + 2 + 3 + 4        --> (1 + 2 + 3 + 4) + 4 * 0
public class Solution {
    public int Sum_Solution(int n) {
        int odd = n & 0x1;
        int tmp = n - odd;
        int ans = (tmp + 1) * (tmp / 2);
        return ans + odd * n;
    }
}


全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:27
明天又是董事长面,啥时候是个头啊
在太阳里长大的人:公司就仨人吧😂
点赞 评论 收藏
分享
一表renzha:不是你说是南通我都没往那方面想,人家真是想表达那个意思吗?
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务