import
java.util.*;
class
GFG {
static
long
countPairs(
int
n,
int
x,
int
[] v) {
int
power[] = {
1
,
10
,
100
,
1000
,
10000
,
100000
,
1000000
,
10000000
,
100000000
,
1000000000
};
Vector<Integer> len =
new
Vector<Integer>();
long
count =
0
;
for
(
int
i =
0
; i < n; i++)
len.add((
int
) (Math.log10(v[i]) +
1
));
HashMap<Integer, Integer> mp =
new
HashMap<Integer, Integer>();
if
(mp.containsKey(v[
0
])) {
mp.put(v[
0
], mp.get(v[
0
]) +
1
);
}
else
{
mp.put(v[
0
],
1
);
}
for
(
int
i =
1
; i < n; i++) {
if
(x % power[len.get(i)] == v[i]&&mp.containsKey(x / power[len.get(i)]))
count += mp.get(x / power[len.get(i)]);
System.out.println(
"count = "
+ count);
if
(mp.containsKey(v[i])) {
mp.put(v[i], mp.get(v[i]) +
1
);
}
else
{
mp.put(v[i],
1
);
}
}
mp.clear();
if
(mp.containsKey(v[n -
1
])) {
mp.put(v[n -
1
], mp.get(v[n -
1
]) +
1
);
}
else
{
mp.put(v[n -
1
],
1
);
}
for
(
int
i = n -
2
; i >=
0
; i--) {
if
(x % power[len.get(i)] == v[i]&&mp.containsKey(x / power[len.get(i)]))
count += mp.get(x / power[len.get(i)]);
System.out.println(
"c = "
+ count);
if
(mp.containsKey(v[i])) {
mp.put(v[i], mp.get(v[i]) +
1
);
}
else
{
mp.put(v[i],
1
);
}
}
return
count;
}
public
static
void
main(String[] args) {
int
N =
4
;
int
X =
1212
;
int
[] numbers = {
1
,
212
,
12
,
12
};
long
ans = countPairs(N, X, numbers);
System.out.print(ans +
"\n"
);
}
}