洛谷P5520 [yLOI2019] 青原樱 题解
题目链接:P5520 [yLOI2019] 青原樱
题意:
n n n 个空放 m m m 个物品,两两物品不能直接相邻,至少空一格
纯数学题。
看看几个空不能放,啊 m − 1 m-1 m−1
那能放的就有
n
−
m
+
1
n-m+1
n−m+1 个空
A
n
−
m
+
1
m
A_{n-m+1}^{m}
An−m+1m
没了,水吧。直接算这个就好了。
为什么对呢,因为你在这 n − m + 1 n-m+1 n−m+1 个空里面可以随便放
时间复杂度 O ( n ) O(n) O(n)
代码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)()
int n,m,p,_;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
cin >> _ >> n >> m >> p;
int res=1;
for(int i=n-m+1; i>=n-2*m+2; i--)
res=res*i%p;
cout << res << '\n';
return 0;
}
转载请说明出处