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;
    }
}


全部评论

相关推荐

dachang盒子:26届秋招必须有实习经历,建议找个实习过度下,同时项目重复率也比较高没有什么难点亮点,我这里有大厂真实的项目可以提供给你学习也可以给你包装大厂实习来提高你的竞争力,感兴趣的话可以私信我或者点我主页简介
你已经投递多少份简历了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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