Problem:
Score : 300 points

Problem Statement

You are given N real values A_1, A_2, \ldots, A_N.
Compute the number of pairs of indices (i, j)
such that i < j and the product A_i \cdot A_j is integer.

Constraints

2 \leq N \leq 200\,000

0 < A_i < 10^4

A_i is given with at most 9 digits after the decimal.

Input

Input is given from Standard Input in the following format.

N
A_1
A_2
\vdots
A_N

Output

Print the number of pairs with integer product A_i \cdot A_j (and i < j).

Sample Input 1

5
7.5
2.4
17.000000001
17
16.000000000

Sample Output 1

3

There are 3 pairs with integer product:

7.5 \cdot 2.4 = 18

7.5 \cdot 16 = 120

17 \cdot 16 = 272

Sample Input 2

11
0.9
1
1
1.25
2.30000
5
70
0.000000001
9999.999999999
0.999999999
1.000000001

Sample Output 2

8

Solution in PHP (7.4.4) (judge verdict: Wrong Answer)

<?php

fscanf(STDIN, '%d', $n);

$values = [];
for ($i = 0; $i < $n; $i++) {
  fscanf(STDIN, '%s', $values[]);
}


$moveUpCount = function (string $int, string $floatFractionalPart): int {
  $moveUpCount = 0;
  for ($i = strlen($int) - 1; $i >= 0; $i--) {
    $lastNumber = $int[$i];
    if ('0' === $lastNumber) {
      $moveUpCount++;
    } else {
      break;
    }
  }

  $mostRightOfFloat = $floatFractionalPart[strlen($floatFractionalPart) - 1];
  if ('0' !== $mostRightOfFloat and intval($mostRightOfFloat) % 2 === 0 and '5' === $lastNumber) {
    // 0以外の偶数と5の積
    $moveUpCount++;
  }

  return $moveUpCount;
};

$intCount = 0;
for ($i = 0; $i < $n - 1; $i++) {
  for ($j = $i + 1; $j < $n; $j++) {
    $left = $values[$i];
    $leftDecimalPart = floor($left);
    $leftFractionalPart = $left - $leftDecimalPart;

    $right = $values[$j];
    $rightDecimalPart = floor($right);
    $rightFractionalPart = $right - $rightDecimalPart;

    if ((float) 0 === $leftFractionalPart) {
      if ((float) 0 === $rightFractionalPart) {
        // 整数同士
        $intCount++;
        continue;
      }
      if ($moveUpCount($left, $rightFractionalPart) >= strlen($rightFractionalPart) - 2) {
        $intCount++;
      }
    } else {
      if ((float) 0 !== $rightFractionalPart) {
        // 小数同士
        continue;
      }
      if ($moveUpCount($right, $leftFractionalPart) >= strlen($leftFractionalPart) - 2) {
        $intCount++;
      }
    }
  }
}

echo $intCount . PHP_EOL;