Print a number containing K digits with digital root D

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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..

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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. 

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

4000

Time complexity: O(K)



My Personal Notes arrow_drop_up