50pts,WA
查看原帖
50pts,WA
1329138
luogu_hezhenmin1楼主2024/10/1 14:33
#include<bits/stdc++.h>
using namespace std;
int n,m,k,cnt,a[102],mp[102][102];
bool vis[102][102][102];
bool ha[102];
int dx[3]={0,1,0},dy[3]={0,0,1};
void dfs(int s,int x,int y){
	if(x==n and y==m){
		if(!ha[s]){
			cnt++;
			a[cnt]=s;
			ha[s]=1;
		}
		return;
	}
	for(int i=1;i<=2;i++){
		int nx=x+dx[i],ny=y+dy[i];
		if(nx>n or ny>m) continue;
		int num=(s*mp[nx][ny])%k;
		if(vis[nx][ny][num]) continue;
		else{
			vis[nx][ny][num]=1;
		    dfs(num,nx,ny);
		}
	}
}
int main(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			cin>>mp[i][j];
	vis[1][1][mp[1][1]%k]=1;
	dfs(mp[1][1]%k,1,1);
	cout<<cnt<<endl;
	for(int i=1;i<=cnt;i++)
		cout<<a[i]<<" ";
	return 0;
}
2024/10/1 14:33
加载中...