比赛 26暑假集训模拟赛1 评测结果 AATTTTTTTT
题目名称 最终得分 20
用户昵称 over 运行时间 27.233 s
代码语言 C++ 内存使用 3.40 MiB
提交时间 2026-06-29 10:22:12
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,p,x[505],ok = 0;
long long ans = 0; 
void dfs(int i,int zu1,int zu2,int zu3)
{
	if(ok) return;
	if(i == n)
	{
		ok = 1;
		return;
	}
	if(x[i] > zu1) dfs(i + 1,x[i],zu2,zu3);
	if(x[i] > zu2) dfs(i + 1,zu1,x[i],zu3);
	if(x[i] > zu3) dfs(i + 1,zu1,zu2,x[i]);
}
int main(){
	freopen("great.in","r",stdin);
	freopen("great.out","w",stdout);
	cin >> n >> p;
	for(int i = 0;i < n; ++ i) x[i] = i + 1;
	do{
		ok = 0;
		dfs(0,-1,-1,-1);
		if(ok) ++ ans;
	} while(next_permutation(x,x + n));
	cout << (ans % p) << endl;
	return 0;
}