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++
// 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
// 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
# 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#
// 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 // 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 ?> |
Javascript
<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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!