Given three integers A, B and N, repeat the following process N times:
- Add a digit to A such that after adding it, A is divisible by B.
- Print the smallest value of A possible after N iterations of above above operation.
- Print -1 if the operation fails.
Note : We need to check divisibility after every digit addition.
Examples:
Input: A = 10, B = 11, N = 1
Output: -1
No matter what digit you add, 10X will never be divisible by 11.Input: A = 5, B = 3, N = 3
Output: 5100
Approach: Bruteforce for the first digit to be added from 0 to 9, if none of the digits make A divisible by B then the answer is -1. Otherwise add the first digit that satisfies the condition and then add 0 after that (n-1) times because if A is divisible by B then A*10, A*100, … will also be divisible by B.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; int addNDigits( int a, int b, int n) { int num = a; // Try all digits from (0 to 9) for ( int i = 0; i <= 9; i++) { int tmp = a * 10 + i; if (tmp % b == 0) { a = tmp; break ; } } // Fails in the first move itself if (num == a) return -1; // Add (n-1) 0's for ( int j = 0; j < n - 1; j++) a *= 10; return a; } // Driver Program to test above function int main() { int a = 5, b = 3, n = 3; cout << addNDigits(a, b, n); return 0; } |
Java
//Java implementation of the approach import java.io.*; class GFG { static int addNDigits( int a, int b, int n) { int num = a; // Try all digits from (0 to 9) for ( int i = 0 ; i <= 9 ; i++) { int tmp = a * 10 + i; if (tmp % b == 0 ) { a = tmp; break ; } } // Fails in the first move itself if (num == a) return - 1 ; // Add (n-1) 0's for ( int j = 0 ; j < n - 1 ; j++) a *= 10 ; return a; } // Driver Program to test above function public static void main (String[] args) { int a = 5 , b = 3 , n = 3 ; System.out.print( addNDigits(a, b, n)); } } // This code is contributed by anuj_67.. |
Python3
# Python3 implementation of the approach def addNDigits(a, b, n) : num = a # Try all digits from (0 to 9) for i in range ( 10 ) : tmp = a * 10 + i if (tmp % b = = 0 ) : a = tmp break # Fails in the first move itself if (num = = a) : return - 1 # Add (n-1) 0's for j in range (n - 1 ) : a * = 10 return a # Driver Code if __name__ = = "__main__" : a = 5 b = 3 n = 3 print (addNDigits(a, b, n)) # This code is contributed by Ryuga |
C#
// C# implementation of the approach using System; class GFG { static int addNDigits( int a, int b, int n) { int num = a; // Try all digits from (0 to 9) for ( int i = 0; i <= 9; i++) { int tmp = a * 10 + i; if (tmp % b == 0) { a = tmp; break ; } } // Fails in the first move itself if (num == a) return -1; // Add (n-1) 0's for ( int j = 0; j < n - 1; j++) a *= 10; return a; } // Driver Code public static void Main () { int a = 5, b = 3, n = 3; Console.WriteLine(addNDigits(a, b, n)); } } // This code is contributed // by anuj_67.. |
PHP
<?php // PHP implementation of the approach function addNDigits( $a , $b , $n ) { $num = $a ; // Try all digits from (0 to 9) for ( $i = 0; $i <= 9; $i ++) { $tmp = $a * 10 + $i ; if ( $tmp % $b == 0) { $a = $tmp ; break ; } } // Fails in the first move itself if ( $num == $a ) return -1; // Add (n-1) 0's for ( $j = 0; $j < $n - 1; $j ++) $a *= 10; return $a ; } // Driver Code $a = 5; $b = 3; $n = 3; echo addNDigits( $a , $b , $n ); // This code is contributed // by Akanksha Rai |
5100
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.