Problem:
Given two integers N,d,find the smallest number that number that is a multiple of d that could be formed by permuting the digits of N .You must use all the digits of N.and if the smallest multiple of d has leading zeros,they can be dropped .If no such number exists,output -1.
Input:
A line containing two space separated integers.representing N and d.
Output:
A single line giving the permutation of N that is the smallest multiple of d,without any leading zeros,if any.If not such permutation exists, the output should be -1.
Constraints:
1<=N<=10^12
1<=d<=1000000
Example 1:
Input:
210 2
Output:
12
Example 2:
Input:
531 2
Output:
1
Understanding of Question:
We need to find out the minimum number that are divisible by given divisor from the given number.
Pseudocode:
- Get the input of number and the divisor.
- Extract the digits and store it in a array.
- Sort the digits
- least multiple=-1
- Find the permutations using import itertools
- Convert the array into integer.
- Traverse the array and check if it is divisible by d.
- Print least multiple.
from itertools import permutations | |
def allPer(string): | |
permlist=permutations(string) | |
for i in permlist: | |
k=int("".join(i)) | |
if k%d==0: | |
t.append(k) | |
return t | |
if __name__ == "__main__": | |
num,d=map(int,input().split()) | |
num=str(num) | |
t=[] | |
num=list(num) | |
num.sort() | |
least_multiple=-1 | |
allPer(num) | |
t=[int(i) for i in t ] | |
for i in t: | |
if i%d==0: | |
least_multiple=i | |
break | |
print(least_multiple) |
Comments
Post a Comment