我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件:
(1)它是从1到2n共2n个整数的一个排列{ai};
(2)所有的奇数项满足a1<a3<…<a2n-1,所有的偶数项满足a2<a4<…<a2n;
(3)任意相邻的两项a2i-1与a2i(1≤i≤n)满足奇数项小于偶数项,即:a2i-1<a2i。
现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列。因为最后的答案可能很大,所以只要求输出答案 mod P的值。
标签:des style blog http color io os ar for
我们称一个长度为2n的数列是有趣的,当且仅当该数列满足以下三个条件:
(1)它是从1到2n共2n个整数的一个排列{ai};
(2)所有的奇数项满足a1<a3<…<a2n-1,所有的偶数项满足a2<a4<…<a2n;
(3)任意相邻的两项a2i-1与a2i(1≤i≤n)满足奇数项小于偶数项,即:a2i-1<a2i。
现在的任务是:对于给定的n,请求出有多少个不同的长度为2n的有趣的数列。因为最后的答案可能很大,所以只要求输出答案 mod P的值。
输入文件只包含用空格隔开的两个整数n和P。输入数据保证,50%的数据满足n≤1000,100%的数据满足n≤1000000且P≤1000000000。
仅含一个整数,表示不同的长度为2n的有趣的数列个数mod P的值。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<cmath> 4 #include<cstring> 5 #include<algorithm> 6 #include<iostream> 7 #include<vector> 8 #include<map> 9 #include<set> 10 #include<queue> 11 #include<string> 12 #define inf 1000000000 13 #define maxn 2001000 14 #define maxm 500+100 15 #define eps 1e-10 16 #define ll long long 17 #define pa pair<int,int> 18 #define for0(i,n) for(int i=0;i<=(n);i++) 19 #define for1(i,n) for(int i=1;i<=(n);i++) 20 #define for2(i,x,y) for(int i=(x);i<=(y);i++) 21 #define for3(i,x,y) for(int i=(x);i>=(y);i--) 22 using namespace std; 23 inline int read() 24 { 25 int x=0,f=1;char ch=getchar(); 26 while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();} 27 while(ch>=‘0‘&&ch<=‘9‘){x=10*x+ch-‘0‘;ch=getchar();} 28 return x*f; 29 } 30 int n,tot,mod,p[maxn],v[maxn],b[maxn]; 31 ll ans=1; 32 inline ll power(ll x,ll y) 33 { 34 ll t=1; 35 for(;y;y>>=1,x=x*x%mod) 36 if(y&1)t=t*x%mod; 37 return t; 38 } 39 int main() 40 { 41 freopen("input.txt","r",stdin); 42 freopen("output.txt","w",stdout); 43 n=read();mod=read(); 44 for2(i,2,n<<1) 45 { 46 if(!v[i])p[++tot]=i; 47 for1(j,tot) 48 { 49 int k=i*p[j]; 50 if(k>2*n)break; 51 v[k]=p[j]; 52 if(i%p[j]==0)break; 53 } 54 } 55 for2(i,2,n)b[i]=-1; 56 for2(i,n+2,n<<1)b[i]=1; 57 for3(i,n<<1,2) 58 if(!v[i])ans=ans*power(i,b[i])%mod; 59 else b[v[i]]+=b[i],b[i/v[i]]+=b[i]; 60 printf("%lld\n",ans); 61 return 0; 62 }
标签:des style blog http color io os ar for
原文地址:http://www.cnblogs.com/zyfzyf/p/4049676.html