Given a digital root ‘D’ and number of digits ‘K’. The task is to print a number containing K digits that has its digital root equal to D. Print ‘-1’ if such a number does not exist.
Examples:
Input: D = 4, K = 4 Output: 4000 No. of digits is 4. Sum of digits is also 4. Input: D = 0, K = 1 Output: 0
Approach: A key observation to solving this problem is that appending any number of 0s to a number does not change its digital root. Hence D followed by (K-1) 0’s is a simple solution.
Special case when D is 0 and K is not 1 does not have a solution since the only number with digital root 0 is 0 itself.
Below is the implementation of the above approach:
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std;
// Function to find a number void printNumberWithDR( int k, int d)
{ // If d is 0 k has to be 1
if (d == 0 && k != 1)
cout << "-1" ;
else {
cout << d;
k--;
// Print k-1 zeroes
while (k--)
cout << "0" ;
}
} // Driver code int main()
{ int k = 4, d = 4;
printNumberWithDR(k, d);
return 0;
} |
// Java implementation of the above approach import java.io.*;
class GFG {
// Function to find a number static void printNumberWithDR( int k, int d)
{ // If d is 0 k has to be 1
if (d == 0 && k != 1 )
System.out.print( "-1" );
else {
System.out.print(d);
k--;
// Print k-1 zeroes
while (k--> 0 )
System.out.print( "0" );
}
} // Driver code public static void main (String[] args) {
int k = 4 , d = 4 ;
printNumberWithDR(k, d);
}
} //This code is contributed by inder_verma.. |
# Python3 implementation of # the above approach # Function to find a number def printNumberWithDR( k, d ) :
# If d is 0, k has to be 1
if d = = 0 and k ! = 1 :
print ( - 1 , end = "")
else :
print (d, end = "")
k - = 1
# Print k-1 zeroes
while k :
print ( 0 ,end = "")
k - = 1
# Driver code if __name__ = = "__main__" :
k, d = 4 , 4
# Function call
printNumberWithDR( k, d )
# This code is contributed by # ANKITRAI1 |
// C# implementation of the above approach using System;
class GFG {
// Function to find a number static void printNumberWithDR( int k, int d)
{ // If d is 0 k has to be 1
if (d == 0 && k != 1)
Console.Write( "-1" );
else {
Console.Write(d);
k--;
// Print k-1 zeroes
while (k-->0)
Console.Write( "0" );
}
} // Driver code static public void Main ()
{ int k = 4, d = 4;
printNumberWithDR(k, d);
} } // This code is contributed by ajit. |
<?php // PHP implementation of the above approach // Function to find a number function printNumberWithDR( $k , $d )
{ // If d is 0 k has to be 1
if ( $d == 0 && $k != 1)
echo "-1" ;
else
{
echo $d ;
$k --;
// Print k-1 zeroes
while ( $k --)
echo "0" ;
}
} // Driver code $k = 4;
$d = 4;
printNumberWithDR( $k , $d );
// This code is contributed // by akt_mit ?> |
<script> // Javascript implementation of the above approach // Function to find a number function printNumberWithDR(k, d)
{ // If d is 0 k has to be 1
if (d == 0 && k != 1)
document.write( "-1" );
else
{
document.write(d);
k--;
// Print k-1 zeroes
while (k-->0)
document.write( "0" );
}
} // Driver Code var k = 4, d = 4;
printNumberWithDR(k, d); // This code is contributed by Ankita saini </script> |
4000
Time complexity: O(K)
Auxiliary Space: O(1)