A Pandigital Number is a number that makes the use of all digits 1 to 9 exactly once. We are given a number, we need to find if there are two numbers whose multiplication is given number and given three numbers together are pandigital.
Examples:
Input : 7254
Output : Yes
39 * 186 = 7254. We can notice that
the three numbers 39, 186 and 7254
together have all digits from 1 to 9.
Input : 6952
Output : Yes
The idea is to consider all pairs that multiply to given number. For every pair, create a string containing three numbers (given number and current pair). We sort the created string and check if sorted string is equal to “123456789”.
C++
// C++ code to check the number // is Pandigital Product or not #include <bits/stdc++.h> using namespace std;
// To check the string formed // from multiplicand, multiplier // and product is pandigital bool isPandigital(string str)
{ if (str.length() != 9)
return false ;
sort(str.begin(), str.end());
return str== "123456789" ;
} // calculate the multiplicand, // multiplier, and product // eligible for pandigital bool PandigitalProduct_1_9( int n)
{ for ( int i = 1; i * i <= n; i++)
if (n % i == 0 && isPandigital(to_string(n) +
to_string(i) +
to_string(n / i)))
return true ;
return false ;
} // Driver Code int main()
{ int n = 6952;
if (PandigitalProduct_1_9(n) == true )
cout << "yes" ;
else
cout << "no" ;
return 0;
} // This code is contributed by // Manish Shaw(manishshaw1) |
Java
// Java code to check the number // is Pandigital Product or not import java.io.*;
import java.util.*;
class GFG {
// calculate the multiplicand, multiplier, and product
// eligible for pandigital
public static boolean PandigitalProduct_1_9( int n)
{
for ( int i = 1 ; i*i <= n; i++)
if (n % i == 0 && isPandigital( "" + n + i + n / i))
return true ;
return false ;
}
// To check the string formed from multiplicand
// multiplier and product is pandigital
public static boolean isPandigital(String str)
{
if (str.length() != 9 )
return false ;
char ch[] = str.toCharArray();
Arrays.sort(ch);
return new String(ch).equals( "123456789" );
}
// Driver function
public static void main(String[] args)
{
int n = 6952 ;
if (PandigitalProduct_1_9(n) == true )
System.out.println( "yes" );
else
System.out.println( "no" );
}
} |
Python3
# Python3 code to check the number # is Pandigital Product or not # Calculate the multiplicand, # multiplier, and product # eligible for pandigital def PandigitalProduct_1_9(n):
i = 1
while i * i < = n:
if ((n % i = = 0 ) and
bool (isPandigital( str (n) +
str (i) +
str (n / / i)))):
return bool ( True )
i + = 1
return bool ( False )
# To check the string formed from # multiplicand multiplier and # product is pandigital def isPandigital( Str ):
if ( len ( Str ) ! = 9 ):
return bool ( False )
ch = "".join( sorted ( Str ))
if (ch = = "123456789" ):
return bool ( True )
else :
return bool ( False )
# Driver code n = 6952
if ( bool (PandigitalProduct_1_9(n))):
print ( "yes" )
else :
print ( "no" )
# This code is contributed by divyeshrabadiya07 |
C#
// C# code to check the number // is Pandigital Product or not. using System;
class GFG {
// calculate the multiplicand,
// multiplier, and product
// eligible for pandigital
public static bool PandigitalProduct_1_9( int n)
{
for ( int i = 1; i*i <= n; i++)
if (n % i == 0 && isPandigital( "" + n
+ i + n / i))
return true ;
return false ;
}
// To check the string formed from multiplicand
// multiplier and product is pandigital
public static bool isPandigital(String str)
{
if (str.Length != 9)
return false ;
char []ch = str.ToCharArray();
Array.Sort(ch);
return new String(ch).Equals( "123456789" );
}
// Driver function
public static void Main()
{
int n = 6952;
if (PandigitalProduct_1_9(n) == true )
Console.Write( "yes" );
else
Console.Write( "no" );
}
} // This code is contributed by nitin mittal. |
Javascript
// JavaScript code to check the number // is Pandigital Product or not // To check the string formed // from multiplicand, multiplier // and product is pandigital function isPandigital(str)
{ if (str.length != 9)
return false ;
let ch = Array.from(str);
ch.sort();
let s = ch;
if (s == "123456789" )
return true ;
else
return false ;
} // calculate the multiplicand, // multiplier, and product // eligible for pandigital function PandigitalProduct_1_9(n)
{ for (let i = 1; i * i <= n; i++)
if (n % i == 0 && isPandigital(n.toString() + i.toString() + (n / i).toString()));
return true ;
return false ;
} // Driver Code let n = 6952; if (PandigitalProduct_1_9(n) == true )
console.log( "yes" );
else console.log( "no" );
// This code is contributed by Nidhi goel |
PHP
<?php // PHP code to check the number // is Pandigital Product or not // To check the string formed // from multiplicand, multiplier // and product is pandigital function isPandigital( $str )
{ if ( strlen ( $str ) != 9)
return false;
$x = str_split ( $str );
sort( $x );
$x = implode( $x );
return strcmp ( $x , "123456789" );
} // calculate the multiplicand, // multiplier, and product // eligible for pandigital function PandigitalProduct_1_9( $n )
{ for ( $i = 1;
$i * $i <= $n ; $i ++)
if ( $n % $i == 0 &&
isPandigital( strval ( $n ) .
strval ( $i ) .
strval ((int)( $n / $i ))))
return true;
return false;
} // Driver Code $n = 6050;
if (PandigitalProduct_1_9( $n ))
echo "yes" ;
else echo "no" ;
// This code is contributed // by mits ?> |
Output
yes
Time Complexity: O(n^1/2)
Auxiliary Space: O(1).