Related Articles

# Multiply a given Integer with 3.5

• Difficulty Level : Easy
• Last Updated : 15 Sep, 2021

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 2.
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`

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`

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 rohitsingh07052.`

## 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`

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up