提交时间:2021-04-03 09:58:54
运行 ID: 6518
#include<bits/stdc++.h> #define int long long using namespace std; const int inf=0x3f3f3f3fll; int read(){ int res=0; int f=1; char ch=getchar(); while(ch<'0' || ch>'9'){ if(ch=='-') f=-1; ch=getchar(); } while(ch>='0' && ch<='9'){ res=res*10+ch-'0'; ch=getchar(); } return res*f; } void out(int x){ if(x>=10) out(x/10); putchar(x%10+'0'); } void out1(int x){ if(x<0) putchar('-'); out(abs(x)); } void out2(int x){ out1(x); putchar('\n'); } int n,m; int ans; bool vis[1050]; void dfs(int x,int num){ if(num==n){ ans++; ans%=m; return ; } for(int i=1;i<=n;i++){ if(vis[i] || abs(i-x)==1) continue; vis[i]=true; dfs(i,num+1); vis[i]=false; } } signed main(){ n=read(),m=read(); for(int i=1;i<=n;i++){ memset(vis,false,sizeof(vis)); vis[i]=true; dfs(i,1); } out2(ans); return 0; }