Pagini recente » Cod sursa (job #1114526) | Cod sursa (job #509833) | Cod sursa (job #2691008) | Cod sursa (job #2962889) | Cod sursa (job #1296632)
#include <cstdio>
#define NMAX 507
#define KMAX 27
using namespace std;
int Num, n, m, Coord[KMAX][KMAX];
double Ans[NMAX][NMAX];
void Gauss(){
for (int i = 1; i <= Num; ++i)
for (int j = i + 1; j <= Num; ++j){
double rap = Ans[j][i] / Ans[i][i];
for (int k = 1; k <= Num + 1; ++k)
Ans[j][k] = (double) Ans[j][k] - Ans[i][k] * rap;
}
}
int main(){
freopen("minesweeper.in", "r", stdin);
freopen("minesweeper.out", "w", stdout);
scanf("%d %d", &n, &m);
n *= m;
for(int i = 0; i <= n; ++i)
for(int j = 0; i + j <= n; ++j)
Coord[i][j] = ++Num;
for(int i = 0; i <= n; ++i)
for(int j = 0; i + j <= n; ++j){
if(i == 0 && j == 0){
Ans[Coord[i][j]][Coord[i][j]] = 1.0;
continue;
}
Ans[Coord[i][j]][Coord[i][j]] = 1.0;
if(i != 0)
Ans[Coord[i][j]][Coord[i - 1][j + 1]] = (double) -i / n;
if(j != 0)
Ans[Coord[i][j]][Coord[i][j - 1]] = (double) -j / n;
Ans[Coord[i][j]][Coord[i + 1][j]] = (double) -(n - i - j) / n;
Ans[Coord[i][j]][Num + 1] = 1.0;
}
printf ("%.6lf\n", (double) Ans[Coord[n][0]][Num + 1] / Ans[Coord[n][0]][Coord[n][0]]);
return 0;
}