Skip to content
Related Articles

Related Articles

Improve Article
Calculate 7n/8 without using division and multiplication operators
  • Difficulty Level : Medium
  • Last Updated : 09 Apr, 2021

Given an integer, write a function that calculates ⌈7n/8⌉ (ceiling of 7n/8) without using division and multiplication operators.
We strongly recommend to minimize your browser and try this yourself first.

Method 1: 
The idea is to first calculate floor of n/8, i.e., ⌊n/8⌋ using right shift bitwise operator. The expression n>>3 produces the same. 
If we subtract ⌊n/8⌋ from n, we get ⌈7n/8⌉

Below is the implementation of above idea :  

C++




// C++ program to evaluate ceil(7n/8)
// without using * and /
#include <iostream>
using namespace std;
 
int multiplyBySevenByEight(int n)
{
     
    // Note the inner bracket here. This is needed
    // because precedence of '-' operator is higher
    // than '<<'
    return (n - (n >> 3));
}
 
// Driver code
int main()
{
    int n = 9;
    cout << multiplyBySevenByEight(n);
    return 0;
}
 
// This code is contribited by khushboogoyal499

C




// C program to evaluate ceil(7n/8) without using * and /
#include <stdio.h>
 
int multiplyBySevenByEight(unsigned int n)
{
    /* Note the inner bracket here. This is needed
       because precedence of '-' operator is higher
       than '<<' */
    return (n - (n >> 3));
}
 
/* Driver program to test above function */
int main()
{
    unsigned int n = 9;
    printf("%d", multiplyBySevenByEight(n));
    return 0;
}

Java




// Java program to evaluate ceil(7n/8)
// without using * and
import java.io.*;
 
class GFG {
    static int multiplyBySevenByEight(int n)
    {
        /* Note the inner bracket here. This is needed
        because precedence of '-' operator is higher
        than '<<' */
        return (n - (n >> 3));
    }
 
    // Driver code
    public static void main(String args[])
    {
        int n = 9;
        System.out.println(multiplyBySevenByEight(n));
    }
}
 
// This code is contributed by Anshika Goyal.

Python3




# Python program to evaluate ceil(7n/8) without using * and /
 
 
def multiplyBySevenByEight(n):
 
    # Note the inner bracket here. This is needed
    # because precedence of '-' operator is higher
    # than '<<'
    return (n - (n >> 3))
 
 
# Driver program to test above function */
n = 9
print(multiplyBySevenByEight(n))
 
# This code is contributed by
# Smitha Dinesh Semwal

C#




// C# program to evaluate ceil(7n/8)
// without using * and
using System;
 
public class GFG {
 
    static int multiplyBySevenByEight(int n)
    {
        /* Note the inner bracket here.
        This is needed because precedence
        of '-' operator is higher than
        '<<' */
        return (n - (n >> 3));
    }
 
    // Driver code
    public static void Main()
    {
        int n = 9;
 
        Console.WriteLine(multiplyBySevenByEight(n));
    }
}
 
// This code is contributed by Sam007.

PHP




<?php
// PHP program to evaluate ceil
// (7n/8) without using * and
 
function multiplyBySevenByEight( $n)
{
    // Note the inner bracket here.
    // This is needed because
    // precedence of '-' operator
    // is higher than '<<'
     
    return ($n - ($n >> 3));
}
 
// Driver Code
$n = 9;
echo multiplyBySevenByEight($n);
 
// This code is contributed by Ajit
?>

Javascript




<script>
// JavaScript program to evaluate ceil(7n/8) without using * and /
 
function multiplyBySevenByEight(n)
{
    /* Note the inner bracket here. This is needed
    because precedence of '-' operator is higher
    than '<<' */
    return (n - (n>>3));
}
 
/* Driver program to test above function */
 
    let n = 9;
    document.write(multiplyBySevenByEight(n));
 
// This code is contributed by Surbhi Tyagi.
 
</script>

Output : 

8

Method 2 (Always matches with 7*n/8): 
The above method doesn’t always produce result same as “printf(“%u”, 7*n/8)”. For example, the value of expression 7*n/8 is 13 for n = 15, but above proogram produces 14. Below is modified version that always matches 7*n/8. The idea is to first multiply the number with 7, then divide by 8 as it happens in expression 7*n/8. 



C




// C program to evaluate 7n/8 without using * and /
#include<stdio.h>
 
int multiplyBySevenByEight(unsigned int n)
{   
    /* Step 1) First multiply number by 7 i.e. 7n = (n << 3) -n
     * Step 2) Divide result by 8 */
   return ((n << 3) -n) >> 3;
}
 
/* Driver program to test above function */
int main()
{
    unsigned int n = 15;
    printf("%u", multiplyBySevenByEight(n));
    return 0;
}

Java




// Java program to evaluate 7n/8
// without using * and /
import java.io.*;
 
class GFG
{
 
    static int multiplyBySevenByEight(int n)
    {
        // Step 1) First multiply number
        // by 7 i.e. 7n = (n << 3) -n
        // * Step 2) Divide result by 8
        return ((n << 3) -n) >> 3;
    }
     
    // Driver program
    public static void main(String args[])
    {
         
        int n = 15;
        System.out.println(multiplyBySevenByEight(n));
    }
}
 
// This code is contributed by Anshika Goyal.

Python3




# Python3 program to evaluate 7n/8
# without using * and /
 
def multiplyBySevenByEight(n):
     
    #Step 1) First multiply number
    # by 7 i.e. 7n = (n << 3) -n
    # Step 2) Divide result by 8
    return ((n << 3) -n) >> 3;
     
# Driver code
n = 15;
print(multiplyBySevenByEight(n));
 
#this code is contributed by sam007.

C#




// C# program to evaluate 7n/8
// without using * and /
using System;
 
public class GFG {
     
    static int multiplyBySevenByEight(int n)
    {
         
        // Step 1) First multiply number
        // by 7 i.e. 7n = (n << 3) -n
        // * Step 2) Divide result by 8
        return ((n << 3) -n) >> 3;
    }
     
    // Driver program
    public static void Main()
    {
        int n = 15;
         
        Console.WriteLine(
            multiplyBySevenByEight(n));
    }
}
 
// This code is contributed by Sam007.

PHP




<?php
// PHP program to evaluate 7n/8
// without using * and /
 
function multiplyBySevenByEight( $n)
{
     
     /* Step 1) First multiply number by
                7 i.e. 7n = (n << 3) - n
         Step 2) Divide result by 8 */
    return (($n << 3) -$n) >> 3;
}
 
    // Driver Code
    $n = 15;
    echo multiplyBySevenByEight($n);
 
// This code is contributed by anuj_67.
?>

Javascript




<script>
 
// Javascript program to evaluate 7n/8
// without using * and /
function multiplyBySevenByEight(n)
{
     
    // Step 1) First multiply number
    // by 7 i.e. 7n = (n << 3) -n
    // * Step 2) Divide result by 8
    return ((n << 3) -n) >> 3;
}
 
// Driver code
var n = 15;
 
document.write(multiplyBySevenByEight(n));
 
// This code is contributed by shikhasingrajput
 
</script>

Output : 

13

Note : There is difference between outcomes of two methods. The method 1 produces ceil(7n/8), but method two produces integer value of 7n/8. For example, for n = 15, outcome of first method is 14, but for second method is 13.

Thanks to Narendra Kangralkar for suggesting this method.
This article is contributed by Rajeev. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above

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 :