#include<iostream>
#include<cmath>
using namespace std;
char graph[60][60] ;
long long result[60][60] ;
long long gcd( long long a ,long long b )
{
if(b == 0)
return a ;
else
return gcd(b, a % b);
}
int main()
{
int i, j;
int n, m ;
cin >> n >> m;
for(i = 0; i < n; i++)
for( j= 0;j <= i; ++j)
cin >> graph[i][j] ;
result[0][0] = (long long)1 << n ;
for(i = 0; i <= n ; ++i)
{
for(j = 0;j <= i; ++j)
{
if( graph[i - 1][j] == '*' )
{
result[i][j] += ( result[i-1][j] >> 1);
result[i][j + 1] += ( result[i-1][j] >> 1);
}
else
result[i + 1][j + 1] += result[i - 1][j] ;
}
}
if( result[n][m] == 0)
cout << "0/1" << endl;
else
{
long long po = (long long)1 << n ;
long long d = gcd(result[n][m] , po) ;
cout << result[n][m] / d << "/" << po / d << endl;
}
return 0;
}
钉子和小球
最新推荐文章于 2021-11-21 10:18:00 发布