Skip to content
Related Articles

Related Articles

Multiply a given Integer with 3.5

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 24 Jun, 2022

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 <iostream>
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 <stdio.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

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 <iostream>
using namespace std;
 
int multiplyWith3Point5(int x)
{
  return ((x<<3) - x)>>1;
}   
 
// This code is contributed by shivanisinghss2110

C




#include <stdio.h>
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 <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 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 <stdio.h>
 
// 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




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

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
Recommended Articles
Page :

Start Your Coding Journey Now!