钉子和小球

来源:互联网 发布:百分百微信扫码软件 编辑:程序博客网 时间:2024/06/11 22:02
 #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; }

原创粉丝点击