import sys
from math import factorial
def dwumian(N, K):
if N < 0 or K < 0:
return 0
if K > N:
return 0
return factorial(N) // factorial(K) // factorial(N - K)
n, m = map(int, input().split())
pocz = []
for i in range(n):
pocz.append(input())
input()
kon = []
for i in range(n):
kon.append(input())
ile_pocz = 0
ile_kon = 0
sum_pocz = 0
sum_kon = 0
for i in range(n):
for j in range(m):
if pocz[i][j] == 'O':
sum_pocz += i + j
ile_pocz += 1
if kon[i][j] == 'O':
sum_kon += i + j
ile_kon += 1
if ile_pocz != ile_kon or sum_pocz % 2 != sum_kon % 2:
print(0)
else:
ile_kraw = 0
kier = [(-1, 0), (1, 0), (0, 1), (0, -1)]
deg = 0
xd = dwumian(n * m - 2, ile_pocz - 1)
for x in range(n):
for y in range(m):
somsiady = 0
for dx, dy in kier:
x1 = x + dx
y1 = y + dy
if 0 <= x1 <= n - 1 and 0 <= y1 <= m - 1:
somsiady += 1
if kon[x1][y1] == '.' and kon[x][y] == 'O':
deg += 1
ile_kraw += somsiady * xd
ile_kraw /= 2
#print(deg, file=sys.stderr)
#print(ile_kraw, file=sys.stderr)
if ile_kraw > 5 * 10 ** 15:
print(0)
else:
pstwo = deg / ile_kraw
print("{:.15f}".format(pstwo))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import sys from math import factorial def dwumian(N, K): if N < 0 or K < 0: return 0 if K > N: return 0 return factorial(N) // factorial(K) // factorial(N - K) n, m = map(int, input().split()) pocz = [] for i in range(n): pocz.append(input()) input() kon = [] for i in range(n): kon.append(input()) ile_pocz = 0 ile_kon = 0 sum_pocz = 0 sum_kon = 0 for i in range(n): for j in range(m): if pocz[i][j] == 'O': sum_pocz += i + j ile_pocz += 1 if kon[i][j] == 'O': sum_kon += i + j ile_kon += 1 if ile_pocz != ile_kon or sum_pocz % 2 != sum_kon % 2: print(0) else: ile_kraw = 0 kier = [(-1, 0), (1, 0), (0, 1), (0, -1)] deg = 0 xd = dwumian(n * m - 2, ile_pocz - 1) for x in range(n): for y in range(m): somsiady = 0 for dx, dy in kier: x1 = x + dx y1 = y + dy if 0 <= x1 <= n - 1 and 0 <= y1 <= m - 1: somsiady += 1 if kon[x1][y1] == '.' and kon[x][y] == 'O': deg += 1 ile_kraw += somsiady * xd ile_kraw /= 2 #print(deg, file=sys.stderr) #print(ile_kraw, file=sys.stderr) if ile_kraw > 5 * 10 ** 15: print(0) else: pstwo = deg / ile_kraw print("{:.15f}".format(pstwo)) |
English