import numpy as np



N=int(eval(input()))

A=[]

PRECISION_DIGITS=9

NO_ENTRY = 0

ARR_SIZE=PRECISION_DIGITS*2+1

cnt=np.full((ARR_SIZE,ARR_SIZE),NO_ENTRY,int)

# cnt=np.zeros((PRECISION_DIGITS*2,PRECISION_DIGITS*2),int)



# print(cnt)



for n in range(N):

	tmpA = float(eval(input()))

	tmpA = round(tmpA*10**PRECISION_DIGITS)

	#print(tmpA)



	five = 0

	two = 0

	# (10**9) -> (two,five)=(9,9)

	# min = 10**-9, ignore < 10**9 ???

	while (tmpA % 2) == 0 and two < PRECISION_DIGITS*2:

		two += 1

		tmpA //= 2

	while (tmpA % 5) == 0 and five < PRECISION_DIGITS*2:

		five += 1

		tmpA //= 5



	if cnt[two][five] == NO_ENTRY:

		cnt[two][five]=1

	else:

		cnt[two][five]+=1



# print(cnt)

ans = 0



for x1 in range(ARR_SIZE):

	for y1 in range(ARR_SIZE):

		if cnt[x1][y1] == NO_ENTRY:

			continue



		for x2 in range(x1,ARR_SIZE):

			for y2 in range(ARR_SIZE):

				if cnt[x2][y2] == NO_ENTRY:

					continue

				# 2**a(a>=0) and 5**b(b>=0) => integer

				if 0 <= x1+x2 - PRECISION_DIGITS*2 and 0 <= y1+y2 -PRECISION_DIGITS*2:

					if x1 == x2 and y1 == y2:

						# same entry

						# Total number of combinations choose 2 items

						# nC2 = n*(n-1)/2

						ans += int((cnt[x1][y1]*(cnt[x2][y2]-1))//2)

					else:

						ans += int(cnt[x1][y1]*cnt[x2][y2])



		# completed counted up entry

		cnt[x1][y1] = NO_ENTRY



print(ans)



import collections



N=int(eval(input()))

A=[]

PRECISION_DIGITS=9

cnt=collections.defaultdict(int)





for n in range(N):

	tmpA = float(eval(input()))

	tmpA = round(tmpA*10**PRECISION_DIGITS)

	#print(tmpA)



	five = 0

	two = 0

	while (tmpA % 2) == 0:

		two += 1

		tmpA //= 2

	while (tmpA % 5) == 0:

		five += 1

		tmpA //= 5



	# (10**9) -> (two,five)=(9,9)

	two -= PRECISION_DIGITS

	five -= PRECISION_DIGITS



	cnt[(two,five)]+=1



# print(cnt)

ans = 0

for t1, cnt1 in list(cnt.items()):

	for t2, cnt2 in list(cnt.items()):

		# 2**a(a>=0) and 5**b(b>=0) => integer

		if 0 <= t1[0]+t2[0] and 0 <= t1[1]+t2[1]:

			if t1 < t2:

				ans += int(cnt1*cnt2)

			elif t1 == t2:

				# same entry

				# Total number of combinations choose 2 items

				# nC2 = n*(n-1)/2

				ans += int((cnt1*(cnt2-1))/2)





print(ans)



import numpy as np

N = int(eval(input()))
A = []
PRECISION_DIGITS = 9
NO_ENTRY = 0
ARR_SIZE = PRECISION_DIGITS * 2 + 1
cnt = np.full((ARR_SIZE, ARR_SIZE), NO_ENTRY, int)
# cnt=np.zeros((PRECISION_DIGITS*2,PRECISION_DIGITS*2),int)
# print(cnt)
for n in range(N):
    tmpA = float(eval(input()))
    tmpA = round(tmpA * 10**PRECISION_DIGITS)
    # print(tmpA)
    five = 0
    two = 0
    # (10**9) -> (two,five)=(9,9)
    # min = 10**-9, ignore < 10**9 ???
    while (tmpA % 2) == 0 and two < PRECISION_DIGITS * 2:
        two += 1
        tmpA //= 2
    while (tmpA % 5) == 0 and five < PRECISION_DIGITS * 2:
        five += 1
        tmpA //= 5
    if cnt[two][five] == NO_ENTRY:
        cnt[two][five] = 1
    else:
        cnt[two][five] += 1
# print(cnt)
ans = 0
for x1 in range(ARR_SIZE):
    for y1 in range(ARR_SIZE):
        if cnt[x1][y1] == NO_ENTRY:
            continue
        for x2 in range(x1, ARR_SIZE):
            for y2 in range(ARR_SIZE):
                if cnt[x2][y2] == NO_ENTRY:
                    continue
                # 2**a(a>=0) and 5**b(b>=0) => integer
                if (
                    0 <= x1 + x2 - PRECISION_DIGITS * 2
                    and 0 <= y1 + y2 - PRECISION_DIGITS * 2
                ):
                    if x1 == x2 and y1 == y2:
                        # same entry
                        # Total number of combinations choose 2 items
                        # nC2 = n*(n-1)/2
                        ans += int((cnt[x1][y1] * (cnt[x2][y2] - 1)) // 2)
                    else:
                        ans += int(cnt[x1][y1] * cnt[x2][y2])
        # completed counted up entry
        cnt[x1][y1] = NO_ENTRY
print(ans)

import collections

N = int(eval(input()))
A = []
PRECISION_DIGITS = 9
cnt = collections.defaultdict(int)
for n in range(N):
    tmpA = float(eval(input()))
    tmpA = round(tmpA * 10**PRECISION_DIGITS)
    # print(tmpA)
    five = 0
    two = 0
    while (tmpA % 2) == 0:
        two += 1
        tmpA //= 2
    while (tmpA % 5) == 0:
        five += 1
        tmpA //= 5
    # (10**9) -> (two,five)=(9,9)
    two -= PRECISION_DIGITS
    five -= PRECISION_DIGITS
    cnt[(two, five)] += 1
# print(cnt)
ans = 0
for t1, cnt1 in list(cnt.items()):
    for t2, cnt2 in list(cnt.items()):
        # 2**a(a>=0) and 5**b(b>=0) => integer
        if 0 <= t1[0] + t2[0] and 0 <= t1[1] + t2[1]:
            if t1 < t2:
                ans += int(cnt1 * cnt2)
            elif t1 == t2:
                # same entry
                # Total number of combinations choose 2 items
                # nC2 = n*(n-1)/2
                ans += int((cnt1 * (cnt2 - 1)) / 2)
print(ans)

-import numpy as np +import collections -NO_ENTRY = 0 -ARR_SIZE = PRECISION_DIGITS * 2 + 1 -cnt = np.full((ARR_SIZE, ARR_SIZE), NO_ENTRY, int) -# cnt=np.zeros((PRECISION_DIGITS*2,PRECISION_DIGITS*2),int) -# print(cnt) +cnt = collections.defaultdict(int) -    # (10**9) -> (two,five)=(9,9) -    # min = 10**-9, ignore < 10**9 ??? -    while (tmpA % 2) == 0 and two < PRECISION_DIGITS * 2: +    while (tmpA % 2) == 0: -    while (tmpA % 5) == 0 and five < PRECISION_DIGITS * 2: +    while (tmpA % 5) == 0: -    if cnt[two][five] == NO_ENTRY: -        cnt[two][five] = 1 -    else: -        cnt[two][five] += 1 +    # (10**9) -> (two,five)=(9,9) +    two -= PRECISION_DIGITS +    five -= PRECISION_DIGITS +    cnt[(two, five)] += 1 -for x1 in range(ARR_SIZE): -    for y1 in range(ARR_SIZE): -        if cnt[x1][y1] == NO_ENTRY: -            continue -        for x2 in range(x1, ARR_SIZE): -            for y2 in range(ARR_SIZE): -                if cnt[x2][y2] == NO_ENTRY: -                    continue -                # 2**a(a>=0) and 5**b(b>=0) => integer -                if ( -                    0 <= x1 + x2 - PRECISION_DIGITS * 2 -                    and 0 <= y1 + y2 - PRECISION_DIGITS * 2 -                ): -                    if x1 == x2 and y1 == y2: -                        # same entry -                        # Total number of combinations choose 2 items -                        # nC2 = n*(n-1)/2 -                        ans += int((cnt[x1][y1] * (cnt[x2][y2] - 1)) // 2) -                    else: -                        ans += int(cnt[x1][y1] * cnt[x2][y2]) -        # completed counted up entry -        cnt[x1][y1] = NO_ENTRY +for t1, cnt1 in list(cnt.items()): +    for t2, cnt2 in list(cnt.items()): +        # 2**a(a>=0) and 5**b(b>=0) => integer +        if 0 <= t1[0] + t2[0] and 0 <= t1[1] + t2[1]: +            if t1 < t2: +                ans += int(cnt1 * cnt2) +            elif t1 == t2: +                # same entry +                # Total number of combinations choose 2 items +                # nC2 = n*(n-1)/2 +                ans += int((cnt1 * (cnt2 - 1)) / 2)