Find the smallest number such that the sum of its digits is N and it is divisible by
Examples :
Input : N = 5 Output : 500000 500000 is the smallest number divisible by 10^5 and sum of digits as 5. Input : N = 20 Output : 29900000000000000000000
Explanation: To make a number divisible by
The approach works well for all subtasks but there are 2 corner cases:
- The first is that the final number may not fit into the data types present in C++/Java. Since we only need to output the number, we can use strings to store the answer.
- The only corner case where the answer is 0 is N = 0.
- There are no cases where the answer doesn’t exist.
Implementation:
// CPP program to find smallest // number to find smallest number // with N as sum of digits and // divisible by 10^N. #include <bits/stdc++.h> using namespace std;
void digitsNum( int N)
{ // If N = 0 the string will be 0
if (N == 0)
cout << "0\n" ;
// If n is not perfectly divisible
// by 9 output the remainder
if (N % 9 != 0)
cout << (N % 9);
// Print 9 N/9 times
for ( int i = 1; i <= (N / 9); ++i)
cout << "9" ;
// Append N zero's to the number so
// as to make it divisible by 10^N
for ( int i = 1; i <= N; ++i)
cout << "0" ;
cout << "\n" ;
} // Driver Code int main()
{ int N = 5;
cout << "The number is : " ;
digitsNum(N);
return 0;
} |
// Java program to find smallest // number to find smallest number // with N as sum of digits and // divisible by 10^N. import java.io.*;
class GFG
{ static void digitsNum( int N)
{ // If N = 0 the string will be 0
if (N == 0 )
System.out.println( "0" );
// If n is not perfectly divisible
// by 9 output the remainder
if (N % 9 != 0 )
System.out.print((N % 9 ));
// Print 9 N/9 times
for ( int i = 1 ; i <= (N / 9 ); ++i)
System.out.print( "9" );
// Append N zero's to the number so
// as to make it divisible by 10^N
for ( int i = 1 ; i <= N; ++i)
System.out.print( "0" );
System.out.print( "" );
} // Driver Code
public static void main (String[] args)
{
int N = 5 ;
System.out.print( "The number is : " );
digitsNum(N);
}
} // This code is contributed by vt_m |
# Python program to find smallest # number to find smallest number # with N as sum of digits and # divisible by 10^N. import math
def digitsNum(N):
# If N = 0 the string will be 0
if (N = = 0 ) :
print ( "0" , end = "")
# If n is not perfectly divisible
# by 9 output the remainder
if (N % 9 ! = 0 ):
print (N % 9 , end = "")
# Print 9 N/9 times
for i in range ( 1 , int (N / 9 ) + 1 ) :
print ( "9" , end = "")
# Append N zero's to the number so
# as to make it divisible by 10^N
for i in range ( 1 , N + 1 ) :
print ( "0" , end = "")
print ()
# Driver Code N = 5
print ( "The number is : " ,end = "")
digitsNum(N) # This code is contributed by Gitanjali. |
// C# program to find smallest // number to find smallest number // with N as sum of digits and // divisible by 10^N. using System;
class GFG
{ static void digitsNum( int N)
{ // If N = 0 the string will be 0
if (N == 0)
Console.Write( "0" );
// If n is not perfectly divisible
// by 9 output the remainder
if (N % 9 != 0)
Console.Write((N % 9));
// Print 9 N/9 times
for ( int i = 1; i <= (N / 9); ++i)
Console.Write( "9" );
// Append N zero's to the number so
// as to make it divisible by 10^N )
for ( int i = 1; i <= N; ++i)
Console.Write( "0" );
Console.WriteLine( "" );
} // Driver Code
public static void Main ()
{
int N = 5;
Console.Write( "The number is : " );
digitsNum(N);
}
} // This code is contributed by vt_m |
<?php // PHP program to find smallest // number to find smallest number // with N as sum of digits and // divisible by 10^N. function digitsNum( $N )
{ // If N = 0 the string will be 0
if ( $N == 0)
echo "0\n" ;
// If n is not perfectly divisible
// by 9 output the remainder
if ( $N % 9 != 0)
echo ( $N % 9);
// Print 9 N/9 times
for ( $i = 1; $i <= ( $N / 9); ++ $i )
echo "9" ;
// Append N zero's to the number so
// as to make it divisible by 10^N
for ( $i = 1; $i <= $N ; ++ $i )
echo "0" ;
echo "\n" ;
} // Driver Code $N = 5;
echo "The number is : " ;
digitsNum( $N );
// This code is contributed by ajit. ?> |
<script> // JavaScript program to find smallest
// number to find smallest number
// with N as sum of digits and
// divisible by 10^N.
function digitsNum(N)
{
// If N = 0 the string will be 0
if (N == 0) document.write( "0\n" );
// If n is not perfectly divisible
// by 9 output the remainder
if (N % 9 != 0) document.write(N % 9);
// Print 9 N/9 times
for ( var i = 1; i <= N / 9; ++i) document.write( "9" );
// Append N zero's to the number so
// as to make it divisible by 10^N
for ( var i = 1; i <= N; ++i) document.write( "0" );
document.write( "\n" );
}
// Driver Code
var N = 5;
document.write( "The number is : " );
digitsNum(N);
// This code is contributed by rrrtnx.
</script>
|
Output
The number is : 500000
Time Complexity: O(N), where N is the given input.
Auxiliary Space: O(1), no extra space is required, so it is a constant.