Skip to content
Related Articles

Related Articles

Improve Article
Multiply a given Integer with 3.5
  • Difficulty Level : Easy
  • Last Updated : 04 Jun, 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 <bits/stdc++.h>
 
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




<?php
// PHP program to multiply
// a number with 3.5
 
 
function multiplyWith3Point5( $x)
{
    return ($x << 1) + $x + ($x >> 1);
}
 
// Driver Code
$x = 4;
echo multiplyWith3Point5($x);
     
// This code is contributed by vt_m.
?>

Javascript




<script>
// javascript Program to multiply
// a number with 3.5 
 
function multiplyWith3Point5(x)
{
    return (x<<1) + x + (x>>1);
}
 
/* Driver program to test above functions*/
var x = 4;
document.write(multiplyWith3Point5(x));
 
// This code is contributed by Amit Katiyar
</script>
Output
14

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

C




#include <stdio.h>
int multiplyWith3Point5(int x)
{
  return ((x<<3) - x)>>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 <iostream>
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 mutiply
        // 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 mutiply
        // 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 mutiply
    # 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 mutiply
    // 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




<script>
 
// Javascript program for the above approach
 
// Function to multiple number
// with 3.5
function multiplyWith3Polet5(x)
{
    let 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 mutiply
    // by 7 it means we do 2
    // shifting for the number
    // but since we doing
    // multiply we need to take
    // care of carry one.
    let x1Shift = x << 1;
    let x2Shifts = x << 2;
 
    r = (x ^ x1Shift) ^ x2Shifts;
    let c = (x & x1Shift) | (x & x2Shifts) |
      (x1Shift & x2Shifts);
       
    while (c > 0)
    {
        c <<= 1;
        let t = r;
        r ^= c;
        c &= t;
    }
 
    // Then divide by 2
    // r / 2
    r = r >> 1;
    return r;
}
     
// Driver code
document.write(multiplyWith3Polet5(5));   
 
// This code is contributed by avijitmondal1998
 
</script>
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 industry experts, please refer DSA Live Classes




My Personal Notes arrow_drop_up
Recommended Articles
Page :