#include <iostream> using namespace std; const int MAX = 105; char grid[MAX][MAX]; int result[MAX][MAX]; int dx[] = {-1, 1, 0, 0, -1, -1, 1, 1}; int dy[] = {0, 0, -1, 1, -1, 1, -1, 1}; int main() { int n, m; cin >> n >> m; for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { cin >> grid[i][j]; } } for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (grid[i][j] == '*') { result[i][j] = -1; continue; } int count = 0; for (int k = 0; k < 8; ++k) { int ni = i + dx[k]; int nj = j + dy[k]; if (ni >= 0 && ni < n && nj >= 0 && nj < m && grid[ni][nj] == '*') { count++; } } result[i][j] = count; } } for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { if (result[i][j] == -1) { cout << '*'; } else { cout << result[i][j]; } } cout << endl; } return 0; } /************************************************************** Problem: 2341 User: addmmiinn Language: C++ Result: Accepted Time:75 ms Memory:2128 kb ****************************************************************/