| 比赛 |
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;
}