Skip to content
Related Articles
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 ``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 ` `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

 `> 3));``}` `// Driver Code``\$n` `= 9;``echo` `multiplyBySevenByEight(``\$n``);` `// This code is contributed by Ajit``?>`

## Javascript

 ``

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

 `> 3;``}` `    ``// Driver Code``    ``\$n` `= 15;``    ``echo` `multiplyBySevenByEight(``\$n``);` `// This code is contributed by anuj_67.``?>`

## Javascript

 ``

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