剑指 Offer 64. 求1+2+…+n
求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/qiu-12n-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
位运算乘法
import java.util.Scanner;
class Solution {
    int quickMulti(int A, int B) {
        int ans = 0;
        for (; B != 0; B >>= 1) {
            if ((B & 1) == 1) {
                ans += A;
            }
            A <<= 1;
        }
        return ans;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().quickMulti(in.nextInt(), in.nextInt()));
        }
    }
}
展开循环
class Solution {
    public int sumNums(int n) {
        int ans = 0, A = n, B = n + 1;
        boolean flag;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        flag = ((B & 1) > 0) && (ans += A) > 0;
        A <<= 1;
        B >>= 1;
        return ans >> 1;
    }
}
    心之所向,素履以往 生如逆旅,一苇以航

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号