 GFG App
Open App Browser
Continue

# Multiply a given Integer with 3.5

Given an integer x, write a function that multiplies x with 3.5 and returns the integer result. You are not allowed to use %, /, *.

```Examples :
Input: 2
Output: 7

Input: 5
Output: 17 (Ignore the digits after decimal point)```

Solution:
1. We can get x*3.5 by adding 2*x, x and x/2. To calculate 2*x, left shift x by 1 and to calculate x/2, right shift x by 1.
Below is the implementation of the above approach:

## C++

 `// C++ program to multiply` `// a number with 3.5` `#include ` `using` `namespace` `std;`   `int` `multiplyWith3Point5(``int` `x)` `{` `    ``return` `(x<<1) + x + (x>>1);` `} `   `/* Driver program to test above functions*/` `int` `main()` `{` `    ``int` `x = 4; ` `    ``cout << ``" "``<< multiplyWith3Point5(x);` `    ``getchar``();` `    ``return` `0;` `}`     `// This code is contributed by shivanisinghss2110.`

## C

 `// C program to multiply` `// a number with 3.5` `#include `   `int` `multiplyWith3Point5(``int` `x)` `{` `    ``return` `(x<<1) + x + (x>>1);` `} `   `/* Driver program to test above functions*/` `int` `main()` `{` `    ``int` `x = 4; ` `    ``printf``(``"%d"``, multiplyWith3Point5(x));` `    ``getchar``();` `    ``return` `0;` `}`

## Java

 `// Java Program to multiply` `// a number with 3.5`   `class` `GFG {` `        `  `    ``static` `int` `multiplyWith3Point5(``int` `x)` `    ``{` `        ``return` `(x<<``1``) + x + (x>>``1``);` `    ``} ` `    `  `    ``/* Driver program to test above functions*/` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``int` `x = ``2``; ` `        ``System.out.println(multiplyWith3Point5(x));` `    ``}` `}`   `// This code is contributed by prerna saini.`

## Python3

 `# Python 3 program to multiply` `# a number with 3.5`   `def` `multiplyWith3Point5(x):`   `    ``return` `(x<<``1``) ``+` `x ``+` `(x>>``1``)` ` `    `# Driver program to ` `# test above functions` `x ``=` `4` `print``(multiplyWith3Point5(x))`   `# This code is contributed by` `# Smitha Dinesh Semwal`

## C#

 `// C# Program to multiply` `// a number with 3.5` `using` `System;`   `class` `GFG` `{` `        `  `    ``static` `int` `multiplyWith3Point5(``int` `x)` `    ``{` `        ``return` `(x<<1) + x + (x>>1);` `    ``} ` `    `  `    ``/* Driver program to test above functions*/` `    ``public` `static` `void` `Main()` `    ``{` `        ``int` `x = 2; ` `        ``Console.Write(multiplyWith3Point5(x));` `    ``}` `    `  `}`   `// This code is contributed by Sam007`

## PHP

 `> 1);` `} `   `// Driver Code` `\$x` `= 4; ` `echo` `multiplyWith3Point5(``\$x``);` `    `  `// This code is contributed by vt_m.` `?>`

## Javascript

 ``

Output

`14`

Time Complexity : O(1)

Space Complexity : O(1)

2. Another way of doing this could be (8*x – x)/2 (See below code). Thanks to Ajaym for suggesting this.

## C++

 `// C++ program approach`   `#include ` `using` `namespace` `std;`   `int` `multiplyWith3Point5(``int` `x)` `{` `  ``return` `((x<<3) - x)>>1;` `}    `   `// This code is contributed by shivanisinghss2110`

## C

 `#include ` `int` `multiplyWith3Point5(``int` `x)` `{` `  ``return` `((x<<3) - x)>>1;` `}    `

## Java

 `// Java program for above approach` `import` `java.io.*;`   `class` `GFG ` `{`   `  ``// Function ` `  ``static` `int` `multiplyWith3Point5(``int` `x)` `  ``{` `    ``return` `((x<<``3``) - x)>>``1``;` `  ``}` `} `   `// This code is contributed by shivanisinghss2110`

## Python3

 `# Python program for above approach` `# Function ` `def` `multiplyWith3Point5(x):` `  `  `    ``return` `((x<<``3``) ``-` `x)>>``1` `  `  `# This code is contributed by shivanisinghss2110`

## C#

 `// C# program for above approach` `using` `System;`   `class` `GFG{`   `// Function to multiple number` `// with 3.5` `static` `int` `multiplyWith3Point5(``int` `x)` ` ``{` `    ``return` `((x<<3) - x)>>1;` `  ``}` `} `   `// This code is contributed by shivanisinghss2110.`

## Javascript

 `// JavaScript program for above approach` `// Function ` `function` `multiplyWith3Point5(x)` `  ``{` `    ``return` `((x<<3) - x)>>1;` `  ``}`   `// This code is contributed by shivanisinghss2110`

Time Complexity : O(1)

Space Complexity : O(1)

Another Approach:

Another way of doing this could be by doing a binary multiplication by 7 then divide by 2 using only <<, ^, &, and >>.

But here we have to mention that only positive numbers can be passed to this method.

Below is the implementation of the above approach:

## C++

 `// C++ program for above approach` `#include ` `using` `namespace` `std;`   `// Function to multiple number` `// with 3.5` `int` `multiplyWith3Point5(``int` `x)` `{` `    ``int` `r = 0;`   `    ``// The 3.5 is 7/2, so multiply  by 7 (x * 7) then divide` `    ``// the result by 2  (result/2) x * 7 -> 7 is 0111 so by` `    ``// doing multiply by 7 it means we do 2 shifting for` `    ``// the number but since we doing multiply we need to` `    ``// take care of carry one.` `    ``int` `x1Shift = x << 1;` `    ``int` `x2Shifts = x << 2;`   `    ``r = (x ^ x1Shift) ^ x2Shifts;` `    ``int` `c = (x & x1Shift) | (x & x2Shifts) | (x1Shift & x2Shifts);` `    ``while` `(c > 0) {` `        ``c <<= 1;` `        ``int` `t = r;` `        ``r ^= c;` `        ``c &= t;` `    ``}`   `    ``// Then divide by 2` `    ``// r / 2` `    ``r = r >> 1;` `    ``return` `r;` `}`   `// Driver Code` `int` `main()` `{` `    ``cout << (multiplyWith3Point5(5));` `    ``return` `0;` `}`   `// This code is contributed by Sania Kumari Gupta (kriSania804)`

## C

 `// C program for above approach` `#include `   `// Function to multiple number` `// with 3.5` `int` `multiplyWith3Point5(``int` `x)` `{` `    ``int` `r = 0;`   `    ``// The 3.5 is 7/2, so multiply  by 7 (x * 7) then divide` `    ``// the result by 2  (result/2) x * 7 -> 7 is 0111 so by` `    ``// doing multiply by 7 it means we do 2 shifting for` `    ``// the number but since we doing multiply we need to` `    ``// take care of carry one.` `    ``int` `x1Shift = x << 1;` `    ``int` `x2Shifts = x << 2;`   `    ``r = (x ^ x1Shift) ^ x2Shifts;` `    ``int` `c = (x & x1Shift) | (x & x2Shifts) | (x1Shift & x2Shifts);` `    ``while` `(c > 0) {` `        ``c <<= 1;` `        ``int` `t = r;` `        ``r ^= c;` `        ``c &= t;` `    ``}`   `    ``// Then divide by 2` `    ``// r / 2` `    ``r = r >> 1;` `    ``return` `r;` `}`   `// Driver Code` `int` `main()` `{` `    ``printf``(``"%d"``,(multiplyWith3Point5(5)));` `    ``return` `0;` `}`   `// This code is contributed by Sania Kumari Gupta (kriSania804)`

## Java

 `// Java program for above approach` `import` `java.io.*;`   `class` `GFG ` `{` `   `  `    ``// Function to multiple number` `    ``// with 3.5` `    ``static` `int` `multiplyWith3Point5(``int` `x)` `    ``{` `        ``int` `r = ``0``;`   `        ``// The 3.5 is 7/2, so multiply ` `        ``// by 7 (x * 7) then` `        ``// divide the result by 2 ` `        ``// (result/2) x * 7 -> 7 is` `        ``// 0111 so by doing multiply ` `        ``// by 7 it means we do 2` `        ``// shifting for the number ` `        ``// but since we doing` `        ``// multiply we need to take ` `        ``// care of carry one.` `        ``int` `x1Shift = x << ``1``;` `        ``int` `x2Shifts = x << ``2``;`   `        ``r = (x ^ x1Shift) ^ x2Shifts;` `        ``int` `c = (x & x1Shift) | (x & x2Shifts)` `                ``| (x1Shift & x2Shifts);` `        ``while` `(c > ``0``) {` `            ``c <<= ``1``;` `            ``int` `t = r;` `            ``r ^= c;` `            ``c &= t;` `        ``}`   `        ``// Then divide by 2 ` `        ``// r / 2` `        ``r = r >> ``1``;` `        ``return` `r;` `    ``}` `  `  `    ``// Driver Code` `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``System.out.println(multiplyWith3Point5(``5``));` `    ``}` `}`

## Python3

 `# Python3 program for the above approach`   `# Function to multiple number` `# with 3.5` `def` `multiplyWith3Point5(x):   ` `    ``r ``=` `0`   `    ``# The 3.5 is 7/2, so multiply` `    ``# by 7 (x * 7) then` `    ``# divide the result by 2` `    ``# (result/2) x * 7 -> 7 is` `    ``# 0111 so by doing multiply` `    ``# by 7 it means we do 2` `    ``# shifting for the number` `    ``# but since we doing` `    ``# multiply we need to take` `    ``# care of carry one.    ` `    ``x1Shift ``=` `x << ``1` `    ``x2Shifts ``=` `x << ``2`   `    ``r ``=` `(x ^ x1Shift) ^ x2Shifts` `    ``c ``=` `(x & x1Shift) | (x & x2Shifts) | (x1Shift & x2Shifts)` `    ``while` `(c > ``0``):` `        ``c <<``=` `1` `        ``t ``=` `r` `        ``r ^``=` `c` `        ``c &``=` `t`   `    ``# Then divide by 2` `    ``# r / 2` `    ``r ``=` `r >> ``1` `    ``return` `r`   ` ``# Driver Code` `if` `__name__ ``=``=` `'__main__'``:` `    ``print``(multiplyWith3Point5(``5``))`   `# This code is contributed by nirajgusain5`

## C#

 `// C# program for above approach` `using` `System;`   `class` `GFG{`   `// Function to multiple number` `// with 3.5` `static` `int` `multiplyWith3Point5(``int` `x)` `{` `    ``int` `r = 0;`   `    ``// The 3.5 is 7/2, so multiply` `    ``// by 7 (x * 7) then` `    ``// divide the result by 2` `    ``// (result/2) x * 7 -> 7 is` `    ``// 0111 so by doing multiply` `    ``// by 7 it means we do 2` `    ``// shifting for the number` `    ``// but since we doing` `    ``// multiply we need to take` `    ``// care of carry one.` `    ``int` `x1Shift = x << 1;` `    ``int` `x2Shifts = x << 2;`   `    ``r = (x ^ x1Shift) ^ x2Shifts;` `    ``int` `c = (x & x1Shift) | (x & x2Shifts) | ` `      ``(x1Shift & x2Shifts);` `      `  `    ``while` `(c > 0) ` `    ``{` `        ``c <<= 1;` `        ``int` `t = r;` `        ``r ^= c;` `        ``c &= t;` `    ``}`   `    ``// Then divide by 2` `    ``// r / 2` `    ``r = r >> 1;` `    ``return` `r;` `}`   `// Driver Code` `public` `static` `void` `Main(``string``[] args)` `{` `    ``Console.WriteLine(multiplyWith3Point5(5));` `}` `}`   `// This code is contributed by ukasp`

## Javascript

 ``

Output

`17`

Time Complexity : O(log n)

Space Complexity : O(1)

Please write comments if you find the above code/algorithm incorrect, or find better ways to solve the same problem

My Personal Notes arrow_drop_up