Multiple of x closest to n

27 Apr, 2021
Given two numbers n and x, we need to calculate the smallest value of x that is closest to given number n.Examples:  
Input : n = 9, x = 4
Output : 8

Input  : n = 2855, x = 13
Output : 2860

Input  :  n = 46426171, x = 43
Output :  46426154

Input  :  n = 1, x = 3
Output :  3
 
We need to find a k such that x*k is closest to n. If we do k = n/x, we get a value of k that may not lead to maximum. We can get closest by comparing the values floor(n/x) * x and ceil(n/x) * x.Below is an interesting solution that doesn’t require computations of floor(n/x) and ceil(n/x). The idea is to do following two steps.  
    n = n + x/2;
    n = n - (n%x);
    result = n
Let us consider below example  
  n = 2855 
  x = 13

  n = 2855 + 13/2
    = 2861
  n = 2861 - (2861 % 13)
    = 2861 - 1
    = 2860 
Below are implementations of above steps. 
C++
Java
Python3
C#
PHP
Javascript
// CPP program to calculate the smallest multiple// of x closest to a given number#include <bits/stdc++.h>using namespace std; // Function to calculate the smallest multipleint closestMultiple(int n, int x){      if(x>n)       return x;     n = n + x/2;    n = n - (n%x);    return n;} // driver programint main(){    int n = 9, x = 4;    printf("%d", closestMultiple(n, x));    return 0;}
// Java program to calculate the smallest// multiple of x closest to a given numberimport java.io.*;class Solution{    // Function to calculate the smallest multiple    static int closestMultiple(int n, int x)    {          if(x>n)           return x;        n = n + x/2;        n = n - (n%x);        return n;    }     // driver program    public static void main (String[] args)    {        int n = 56287, x = 27;        System.out.println(closestMultiple(n, x));    }}
# Python3 program to calculate# the smallest multiple of x# closest to a given number # Function to calculate# the smallest multipledef closestMultiple(n, x):    if x > n:        return x;    z = (int)(x / 2);    n = n + z;    n = n - (n % x);    return n; # Driver Coden = 56287;x = 27;print(closestMultiple(n, x)); # This code is contributed# by mits
// C# program to calculate smallest// multiple of x closest to a// given numberusing System; class Solution {    // Function to calculate the    // smallest multiple    static int closestMultiple(int n, int x)    {         if (x > n)            return x;        n = n + x / 2;        n = n - (n % x);        return n;    }     // Driver program    public static void Main()    {        int n = 56287, x = 27;        Console.WriteLine(closestMultiple(n, x));    }} // This code is contributed by Anant Agarwal.
<?php// PHP program to calculate// the smallest multiple// of x closest to a// given number // Function to calculate// the smallest multiplefunction closestMultiple($n, $x){    if($x > $n)    return $x;     $n = $n + $x / 2;    $n = $n - ($n % $x);    return $n;}     // Driver Code    $n = 9;    $x = 4;    echo closestMultiple($n, $x);     // This code is contributed by ajit?>
<script>    // Javascript program to calculate smallest    // multiple of x closest to a    // given number         // Function to calculate the    // smallest multiple    function closestMultiple(n, x)    {           if (x > n)            return x;        n = n + parseInt(x / 2, 10);        n = n - (n % x);        return n;    }         let n = 56287, x = 27;      document.write(closestMultiple(n, x));         // This code is contributed by rameshtravel07.</script>
Output:  
 56295
This article is contributed by Pramod Kumar. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
jit_t
Mithun Kumar
rameshtravel07
Mathematical
Misc
School Programming
Misc
Mathematical
Misc
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Merge two sorted arrays
Operators in C / C++
Sieve of Eratosthenes
Prime Numbers
Program to find GCD or HCF of two numbers
Overview of Data Structures | Set 1 (Linear Data Structures)
vector::push_back() and vector::pop_back() in C++ STL
Top 10 algorithms in Interview Questions
Virtualization In Cloud Computing and Types
How to write Regular Expressions?