#include <iostream>
//#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
//#include <set>
//#include <map>
//#include <queue>
//#include <deque>
//#include <bitset>
//#include <math.h>
using namespace std ;
using ll = long long ;
//using ld = long double ;
using vll = vector<ll> ;
using vvll = vector<vll> ;
//using vc = vector<char> ;
//using vvc = vector<vc> ;
//using vb = vector<bool> ;
//using vvb = vector<vb> ;
//using pll = pair<ll,ll> ;
#define all(v) v.begin(),v.end()
//ll mod = 1000000007 ;
//long double pie = acos(-1) ;
//ll INF = 1000000000000 ;

//void yorn(bool a){if(a) cout << "Yes" << endl ; else cout << "No" << endl ;}
//void YorN(bool a){if(a) cout << "YES" << endl ; else cout << "NO" << endl ;}
ll gcd(long long a,long long b){if(b==0) return a ; return gcd(b,a%b) ;}
ll lcm(long long a,long long b){return a/gcd(a,b)*b ;}
//ll sa(long long a,long long b){if(a>b) return a-b ; return b-a ;}
//void fix_cout(){cout << fixed << setprecision(20) ;}

int main(){
	ll n ; cin >> n ;
//	vector<pair<ll,ll>> a(n) ;
	vvll a(128,vll(128,0)) ;
	for(int i=0;i<n;i++){
		string s ; cin >> s ;
		ll cnt = 0 ;
		ll sub = 0 ;
		for(int j=0;j<s.size();j++){
			if(s.at(j)=='.'){
				cnt++ ;
			}else{
				if(cnt==0){
					sub *= 10 ;
					sub += s.at(j)-'0' ;
				}else{
					sub *= 10 ;
					sub += s.at(j)-'0' ;
					cnt++ ;
				}
			}
		}
		if(cnt!=0) cnt-- ;
		ll two=0,five=0 ;
		ll tmp = sub ;
		while(sub%2==0){
			two++ ;
			sub /= 2 ;
		}
		sub = tmp ;
		while(sub%5==0){
			five++ ;
			sub /= 5 ;
		}
		a.at(63+two-cnt).at(63+five-cnt)++ ;
//		cout << 63+two-cnt << " " << 63+five-cnt << endl ;
//		ll ten = 1 ;
//		for(int j=0;j<cnt-1;j++) ten *= 10 ;
//		ll g = gcd(ten,sub) ;
//		a.at(i).first = sub/g ;
//		a.at(i).second = ten/g ;
	}
	ll ans = 0 ;
//	vvll sum(129,vll(129,0)) ;
//	for(int i=0;i<128;i++){
//		for(int j=127;j>=0;j--) sum.at(i).at(j) += sum.at(i).at(j+1)+a.at(i).at(j) ;
//	}
//	for(int j=0;j<128;j++){
//		for(int i=127;i>=0;i--) sum.at(i).at(j) += sum.at(i+1).at(j) ;
//	}
//	for(int i=60;i<=80;i++){
//		for(int j=60;j<=80;j++) cout << sum.at(i).at(j) << " " ;
//		cout << endl ;
//	}
//	cout << -1 << endl ;
//	for(int i=0;i<127;i++){
//		for(int j=0;j<127;j++){
////			if(a.at(i).at(j)==0) continue ;
//			ll y,x ;
//			y = 126-i ; x = 126-j ;
//			if(y<i||(y==i&&x<j)){
//				y = i ; x = j ;
//			}
//			ll sub = sum.at(y).at(x) ;
//			if(min(i,j)>=63) sub -= a.at(i).at(j) ;
//			if(min(i,j)>=63){
//				sub -= a.at(i).at(j) ;
//				ans += sub*a.at(i).at(j)+a.at(i).at(j)*(a.at(i).at(j)-1)/2 ;
//			}else{
//				ans += sub*a.at(i).at(j) ;
//			}
////			cout << i << " " << j << " " << y << " " << x << endl ;
////			ans += (sub-a.at(i).at(j)*(min(i,j)>=63))*a.at(i).at(j)+(min(i,j)>=63)*(a.at(i).at(j)-1)*a.at(i).at(j)/2 ;
////			if(i<63||(i==63&&))
//		}
//	}
	ll sub = 0 ;
	for(int i=0;i<128;i++){
		for(int j=0;j<128;j++){
			if(a.at(i).at(j)==0) continue ;
//			cout << i << " " << j << " " ;
			if(min(i,j)>=63) sub += a.at(i).at(j)*(a.at(i).at(j)-1)/2 ;
			for(int k=max(i,126-i);k<128;k++){
				for(int l=(k==i?max(j,126-j):126-j);l<128;l++){
					 if(i!=k||j!=l) ans += a.at(i).at(j)*a.at(k).at(l) ;
//					 if(k==65&&l==62) cout << "OK" << endl ;
				}
			}
//			cout << ans << " " << sub << " " << a.at(i).at(j) << endl ;
		}
	}
	cout << ans+sub << endl ;
//	for(int i=0;i<128;i++){
//		for(int j=0;j<128;j++){
//			if(a.at(i).at(j)==0) continue ;
//			for(int k=i;k<128;k++){
//				for(int l=j;l<128;l++){
//					if(min(i+k,j+l)>=126){
//						if(i!=k||j!=l) ans += a.at(i).at(j)*a.at(k).at(l) ;
//					}
//				}
//			}
//		}
//	}
//	cout << ans << endl ;
//	for(int i=40;i<70;i++){
//		for(int j=40;j<70;j++){
//			cout << a.at(i).at(j) << " " ;
//		}
//		cout << endl ;
//	}
//	for(int i=0;i<n;i++){}
//	for(auto i:a) cout << i.first << " " << i.second << endl ;
}


Measured memory_bytes: 3712