比较随大流
有和我像的欢迎互关
#include <bits/stdc++.h>
using namespace std;
int mp[105][105];
int b[105][105][105];
int c[105][105];
int gx[2] = {1,0},gy[2] = {0,1};
int n,m,k,ans;
void dfs(int x,int y,int w){
if (x == n && y == m){
ans++;
return;
}
for (int i = 0;i < 2;i++){
int tx = x + gx[i];
int ty = y + gy[i];
int w2 = w;
w2 = w * (mp[tx][ty] % k);
w2 %= k;
if (tx >= 1 && tx <= n && ty >= 1 && ty <= m && c[tx][ty] == 0 && b[tx][ty][w2] != 1){
b[tx][ty][w2] = 1;
c[tx][ty] = 1;
dfs(tx,ty,w2);
c[tx][ty] = 0;
}
}
}
int main(){
memset(b,-1,sizeof(b));
cin >> n >> m>> k;
for (int i = 1;i <= n;i++){
for (int j = 1;j <= m;j++){
cin >> mp[i][j];
}
}
c[1][1] = 1;
dfs(1,1,mp[1][1]);
cout << ans << endl;
for (int i = 0;i < k;i++){
if (b[n][m][i] == 1) cout << i << ' ';
}
return 0;
}