#include <cmath>
#include <cstring>
#include <iostream>
using
namespace
std;
long
long
numConcat(
long
long
num1,
long
long
num2)
{
int
digits = to_string(num2).length();
num1 = num1 *
pow
(10, digits);
num1 += num2;
return
num1;
}
int
checkPanDigital(
long
long
n)
{
string str = to_string(n);
int
b = 10;
if
(str.length() < b) {
return
0;
}
int
hash[b];
memset
(hash, 0,
sizeof
(hash));
for
(
int
i = 0; i < str.length(); i++) {
if
(str[i] >=
'0'
&& str[i] <=
'9'
) {
hash[str[i] -
'0'
] = 1;
}
else
if
(str[i] -
'A'
<= b - 11) {
hash[str[i] -
'A'
+ 10] = 1;
}
}
for
(
int
i = 0; i < b; i++) {
if
(hash[i] == 0) {
return
0;
}
}
return
1;
}
bool
isPandigitalFraction(
long
long
N,
long
long
D)
{
long
long
join = numConcat(N, D);
return
checkPanDigital(join) == 1;
}
int
countPandigitalFraction(
long
long
v[],
int
n)
{
int
count = 0;
for
(
int
i = 0; i < n; i++) {
for
(
int
j = i + 1; j < n; j++) {
if
(isPandigitalFraction(v[i], v[j])) {
count++;
}
}
}
return
count;
}
int
main()
{
long
long
arr[] = { 12345, 67890, 123, 4567890 };
int
n =
sizeof
(arr) /
sizeof
(arr[0]);
cout << countPandigitalFraction(arr, n) << endl;
return
0;
}