协会网站建设必要性,六安三十铺,江西省公共资源交易网,宁夏人脸识别门禁正题
题目链接:https://www.luogu.com.cn/problem/P3200 题目大意
求一个长度为2∗n2*n2∗n的排列要求
奇数位和偶数位分别递增相邻的偶数位大于奇数位 解题思路
可以看做是一个2∗n2*n2∗n的序列按顺序填进奇数和偶数位#xff0c;然后因为第二个要求所以奇数位在任何时候…正题
题目链接:https://www.luogu.com.cn/problem/P3200 题目大意
求一个长度为2∗n2*n2∗n的排列要求
奇数位和偶数位分别递增相邻的偶数位大于奇数位 解题思路
可以看做是一个2∗n2*n2∗n的序列按顺序填进奇数和偶数位然后因为第二个要求所以奇数位在任何时候都得比偶数位的要多就转换为了求第nnn个卡特兰数了。
然后因为ppp不是质数所以要质因数分解来除数时间复杂度O(nlogn)O(n\log n)O(nlogn) codecodecode
#includecstdio
#includecstring
#includealgorithm
using namespace std;
const int N2e610;
int n,p,tot,pri[N],cnt[N];
bool v[N];
int main()
{scanf(%d%d,n,p);for(int i2;i2*n;i){if(!v[i])pri[tot]i;for(int j1;jtoti*pri[j]n;j){v[i*pri[j]]1;if(i%pri[j]0)break;}}for(int in2;i2*n;i){int xi;for(int j1;pri[j]*pri[j]xjtot;j)while(x%pri[j]0)x/pri[j],cnt[j];if(x!1)cnt[lower_bound(pri1,pri1tot,x)-pri];}for(int i1;in;i){int xi;for(int j1;pri[j]*pri[j]xjtot;j)while(x%pri[j]0)x/pri[j],cnt[j]--;if(x!1)cnt[lower_bound(pri1,pri1tot,x)-pri]--;}long long ans1;for(int i1;itot;i)while(cnt[i])ansans*pri[i]%p,cnt[i]--;printf(%d\n,ans);
}