#include<cstdio>
using namespace std;
int n,k;
long long x,i2;
char tab[3020][3020];
int main ()
{
scanf("%d %d",&n,&k);
for(int i=10; i<n+10; i++)
for(int j=10; j<n+10; j++)
scanf(" %c",&tab[j][i]);
if(k==1)
{
for(int i=10; i<n+10; i++)
for(int j=10; j<n+10; j++)
if(tab[j][i] == '.' && (tab[j-1][i]=='#' || tab[j+1][i] == '#' || tab[j][i-1] =='#' || tab[j][i+1]=='#'))
x++;
}
if(k==2)
{
for(int i=10; i<n+10 ;i++)
for(int j=10; j<n+10; j++)
if(tab[j][i] == '.' && (tab[j-1][i]=='#' || tab[j+1][i] == '#' || tab[j][i-1] =='#' || tab[j][i+1]=='#'))
{
x++;
if(tab[j-1][i] == '.' && tab[j-2][i]!= '#' && tab[j-1][i-1]!='#' && tab[j-1][i+1] != '#')
i2++;
if(tab[j+1][i] == '.' && tab[j+2][i]!= '#' && tab[j+1][i-1]!='#' && tab[j+1][i+1] != '#')
i2++;
if(tab[j][i+1] == '.' && tab[j][i+2]!= '#' && tab[j-1][i+1]!='#' && tab[j+1][i+1] != '#')
i2++;
if(tab[j][i-1] == '.' && tab[j][i-2]!= '#' && tab[j-1][i-1]!='#' && tab[j+1][i-1] != '#')
i2++;
}
x=(x*(x-1))/2;
x%=1000000007;
x+=i2;
}
printf("%d",x);
return 0;
}
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 | #include<cstdio> using namespace std; int n,k; long long x,i2; char tab[3020][3020]; int main () { scanf("%d %d",&n,&k); for(int i=10; i<n+10; i++) for(int j=10; j<n+10; j++) scanf(" %c",&tab[j][i]); if(k==1) { for(int i=10; i<n+10; i++) for(int j=10; j<n+10; j++) if(tab[j][i] == '.' && (tab[j-1][i]=='#' || tab[j+1][i] == '#' || tab[j][i-1] =='#' || tab[j][i+1]=='#')) x++; } if(k==2) { for(int i=10; i<n+10 ;i++) for(int j=10; j<n+10; j++) if(tab[j][i] == '.' && (tab[j-1][i]=='#' || tab[j+1][i] == '#' || tab[j][i-1] =='#' || tab[j][i+1]=='#')) { x++; if(tab[j-1][i] == '.' && tab[j-2][i]!= '#' && tab[j-1][i-1]!='#' && tab[j-1][i+1] != '#') i2++; if(tab[j+1][i] == '.' && tab[j+2][i]!= '#' && tab[j+1][i-1]!='#' && tab[j+1][i+1] != '#') i2++; if(tab[j][i+1] == '.' && tab[j][i+2]!= '#' && tab[j-1][i+1]!='#' && tab[j+1][i+1] != '#') i2++; if(tab[j][i-1] == '.' && tab[j][i-2]!= '#' && tab[j-1][i-1]!='#' && tab[j+1][i-1] != '#') i2++; } x=(x*(x-1))/2; x%=1000000007; x+=i2; } printf("%d",x); return 0; } |
English