(7ms, 96KB)標頭檔要用#include<math.h>才能運算絕對值,以及一開始看題目不是很了解,題目的意思是所有小於曼哈頓距離的值相加,才取10的餘數,我也是看了很久才知道是這意思。C++可用vector,改成C就不能,只好使用陣列紀錄特殊位置的座標。
#include <stdio.h>
#include<math.h>
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int a[n][m],i,j,k,l,s,c=0;
int d[n*m][2];
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
s=0;
for(k=0;k<m;k++)
{
for(l=0;l<n;l++)
{
if((abs(j-k)+abs(i-l))<=a[i][j])
s+=a[l][k];
}
}
if(s%10==a[i][j])
{
d[c][0]=i;
d[c][1]=j;
c++;
}
}
}
printf("%d\n",c);
for(i=0;i<c;i++)
printf("%d %d\n",d[i][0],d[i][1]);
return 0;
}