Smallest number greater than or equal to X whose sum of digits is divisible by Y - GeeksforGeeks

08 Nov, 2021
Given two integers X and Y, the task is to find the smallest number greater than or equal to X whose sum of digits is divisible by Y. Note: 1 <= X <= 1000, 1 <= Y <= 50.Examples:  
Input: X = 10, Y = 5 Output: 14 Explanation: 14 is the smallest number greater than 10 whose sum of digits (1+4 = 5) is divisible by 5. Input: X = 5923, Y = 13 Output: 5939  
 
Approach: The idea for this problem is to run a loop from X and check for each integer if its sum of digits is divisible by Y or not. Return the first number whose sum of digits is divisible by Y. Given the constraints of X and Y, the answer always exist. Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ program to find the smallest number// greater than or equal to X and divisible by Y #include <bits/stdc++.h>using namespace std; #define MAXN 10000000 // Function that returns the sum// of digits of a numberint sumOfDigits(int n){    // Initialize variable to    // store the sum    int sum = 0;     while (n > 0) {         // Add the last digit        // of the number        sum += n % 10;         // Remove the last digit        // from the number        n /= 10;    }    return sum;} // Function that returns the smallest number// greater than or equal to X and divisible by Yint smallestNum(int X, int Y){    // Initialize result variable    int res = -1;     // Loop through numbers greater    // than  equal to X    for (int i = X; i < MAXN; i++) {         // Calculate sum of digits        int sum_of_digit = sumOfDigits(i);         // Check if sum of digits        // is divisible by Y        if (sum_of_digit % Y == 0) {            res = i;            break;        }    }     return res;} // Driver codeint main(){    int X = 5923, Y = 13;     cout << smallestNum(X, Y);     return 0;}
// Java program to find the smallest number// greater than or equal to X and divisible by Y class GFG{ static final int MAXN = 10000000; // Function that returns the sum// of digits of a numberstatic int sumOfDigits(int n){         // Initialize variable to    // store the sum    int sum = 0;    while (n > 0)    {          // Add the last digit         // of the number         sum += n % 10;          // Remove the last digit         // from the number         n /= 10;    }    return sum;} // Function that returns the smallest number// greater than or equal to X and divisible by Ystatic int smallestNum(int X, int Y){         // Initialize result variable    int res = -1;     // Loop through numbers greater    // than equal to X    for (int i = X; i < MAXN; i++)    {         // Calculate sum of digits        int sum_of_digit = sumOfDigits(i);         // Check if sum of digits        // is divisible by Y        if (sum_of_digit % Y == 0)        {            res = i;            break;        }    }    return res;} // Driver codepublic static void main(String[] args){    int X = 5923, Y = 13;    System.out.print(smallestNum(X, Y));}} // This code is contributed by Rohit_ranjan
# Python3 program to find the smallest number# greater than or equal to X and divisible by Y MAXN = 10000000 # Function that returns the # sum of digits of a numberdef sumOfDigits(n):         # Initialize variable     # to store the sum    sum = 0         while(n > 0):                 # Add the last digit        # of the number        sum += n % 10                 # Remove the last digit        # from the number        n //= 10             return sum # Function that returns the smallest number# greater than or equal to X and divisible by Ydef smallestNum(X, Y):         # Initialize result variable    res = -1;     # Loop through numbers greater    # than equal to X    for i in range(X, MAXN):                 # Calculate sum of digits        sum_of_digit = sumOfDigits(i)                 # Check if sum of digits        # is divisible by Y        if sum_of_digit % Y == 0:            res = i            break         return res                 # Driver codeif __name__=='__main__':         (X, Y) = (5923, 13)          print(smallestNum(X, Y)) # This code is contributed by rutvik_56
// C# program to find the smallest number// greater than or equal to X and divisible by Yusing System; class GFG{ static readonly int MAXN = 10000000; // Function that returns the sum// of digits of a numberstatic int sumOfDigits(int n){         // Initialize variable to    // store the sum    int sum = 0;    while(n > 0)    {                  // Add the last digit         // of the number         sum += n % 10;          // Remove the last digit         // from the number         n /= 10;    }    return sum;} // Function that returns the smallest number// greater than or equal to X and divisible by Ystatic int smallestNum(int X, int Y){         // Initialize result variable    int res = -1;     // Loop through numbers greater    // than equal to X    for(int i = X; i < MAXN; i++)    {             // Calculate sum of digits        int sum_of_digit = sumOfDigits(i);         // Check if sum of digits        // is divisible by Y        if(sum_of_digit % Y == 0)        {           res = i;           break;        }    }    return res;} // Driver codepublic static void Main(String[] args){    int X = 5923, Y = 13;    Console.Write(smallestNum(X, Y));}} // This code is contributed by gauravrajput1
<script> // javascript program to find the smallest number// greater than or equal to X and divisible by Yvar MAXN = 10000000; // Function that returns the sum// of digits of a numberfunction sumOfDigits(n){         // Initialize variable to    // store the sum    var sum = 0;    while (n > 0)    {          // Add the last digit         // of the number         sum += n % 10;          // Remove the last digit         // from the number         n  = parseInt(n/10);    }    return sum;} // Function that returns the smallest number// greater than or equal to X and divisible by Yfunction smallestNum(X , Y){         // Initialize result variable    var res = -1;     // Loop through numbers greater    // than equal to X    for (i = X; i < MAXN; i++)    {         // Calculate sum of digits        var sum_of_digit = sumOfDigits(i);         // Check if sum of digits        // is divisible by Y        if (sum_of_digit % Y == 0)        {            res = i;            break;        }    }    return res;} // Driver codevar X = 5923, Y = 13;document.write(smallestNum(X, Y));  // This code contributed by shikhasingrajput</script>
5939
 
Time Complexity: O(MAXN)
Auxiliary Space: O(1)
Rohit_ranjan
GauravRajput1
rutvik_56
shikhasingrajput
sushmitamittal1329
number-digits
Mathematical
School Programming
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples
Prime Numbers
Program to find GCD or HCF of two numbers
Program for Decimal to Binary Conversion
Python Dictionary
Arrays in C/C++
Reverse a string in Java
Inheritance in C++
Constructors in C++