对于任何给定的两个数字n和m,您都必须找到n * m而不使用任何乘法运算符。
例子 :
Input: n = 25 , m = 13
Output: 325
Input: n = 50 , m = 16
Output: 800
我们可以用shift运算符解决这个问题。这个想法基于这样一个事实,即每个数字都可以二进制形式表示。并且与数字的乘积等效于与2的乘方的乘积。可以使用左移运算符获得2的乘方。
检查m的二进制表示形式中的每个设置位,以及每个左移n的设置位,计数次数,如果m的设置位的值置位,则将该值相加并回答。
C++
// CPP program to find multiplication
// of two number without use of
// multiplication operator
#include
using namespace std;
// Function for multiplication
int multiply(int n, int m)
{
int ans = 0, count = 0;
while (m)
{
// check for set bit and left
// shift n, count times
if (m % 2 == 1)
ans += n << count;
// increment of place value (count)
count++;
m /= 2;
}
return ans;
}
// Driver code
int main()
{
int n = 20 , m = 13;
cout << multiply(n, m);
return 0;
}
Java
// Java program to find multiplication
// of two number without use of
// multiplication operator
class GFG
{
// Function for multiplication
static int multiply(int n, int m)
{
int ans = 0, count = 0;
while (m > 0)
{
// check for set bit and left
// shift n, count times
if (m % 2 == 1)
ans += n << count;
// increment of place
// value (count)
count++;
m /= 2;
}
return ans;
}
// Driver code
public static void main (String[] args)
{
int n = 20, m = 13;
System.out.print( multiply(n, m) );
}
}
// This code is contributed by Anant Agarwal.
Python3
# python 3 program to find multiplication
# of two number without use of
# multiplication operator
# Function for multiplication
def multiply(n, m):
ans = 0
count = 0
while (m):
# check for set bit and left
# shift n, count times
if (m % 2 == 1):
ans += n << count
# increment of place value (count)
count += 1
m = int(m/2)
return ans
# Driver code
if __name__ == '__main__':
n = 20
m = 13
print(multiply(n, m))
# This code is contributed by
# Ssanjit_Prasad
C#
// C# program to find multiplication
// of two number without use of
// multiplication operator
using System;
class GFG
{
// Function for multiplication
static int multiply(int n, int m)
{
int ans = 0, count = 0;
while (m > 0)
{
// check for set bit and left
// shift n, count times
if (m % 2 == 1)
ans += n << count;
// increment of place
// value (count)
count++;
m /= 2;
}
return ans;
}
// Driver Code
public static void Main ()
{
int n = 20, m = 13;
Console.WriteLine( multiply(n, m) );
}
}
// This code is contributed by vt_m.
PHP
Javascript
输出 :
260