题解 | #牛群的数量计算#
牛群的数量计算
https://www.nowcoder.com/practice/dfafaa65a55040b3a4b65418db68949d
题目考察的知识点是:
二进制运算。
题目解答方法的文字分析:
两数相乘,异或可以算出两数相加,但进位是算不到的,两数相与左移就可算出是否进位;然后相加n次,求和即可。
本题解析所用的编程语言:
java语言。
完整且正确的编程代码:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @param a int整型 * @return int整型 */ public int multiply (int n, int a) { // write code here if (n == 0 || a == 0) { return 0; } int product = 0; while (a > 0) { if ((a & 1) > 0) { product = add(product, n); } n = n << 1; a = a >> 1; } return product; } // 迭代累加 public int add(int num1, int num2) { int sum = num1 ^ num2; int carry = (num1 & num2) << 1; while (carry != 0) { int a = sum; int b = carry; sum = a ^ b; carry = (a & b) << 1; } return sum; } }#题解#