首页 > 代码库 > hdu 4869
hdu 4869
一个机智题,可惜比赛的时候没有机智出来
#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define ll long long#define mod 1000000009#define maxn 100009using namespace std;ll c[maxn];void gcd(ll a,ll b,ll &d,ll &x,ll &y){ if(b==0) { d=a; x=1; y=0; } else { gcd(b,a%b,d,y,x); y-=x*(a/b); }}ll inv(ll a,ll n){ ll d,x,y; gcd(a,n,d,x,y); return d==1?(x+n)%n:-1;}int main(){ int m,x,n; while(scanf("%d%d",&m,&n)!=EOF) { int low=0,up=0; int loww=0,upp=0; for(int i=0; i<m; i++) { scanf("%d",&x); loww=n-up; upp=n-low; if(up>x&&low<x) low=(up-x)%2; else if(up<=x) low=abs(up-x); else if(low>=x) low=abs(low-x); if(upp>x&&loww<x) loww=(upp-x)%2; else if(upp<=x) loww=abs(upp-x); else if(loww>=x) loww=abs(loww-x); up=n-loww; }// printf("%d %d\n",low,up); c[0]=1; ll ans=0; for(int i=1; i<=n; i++) { c[i]=(c[i-1]*(n-i+1)%mod*inv(i,mod))%mod; } for(int i=low; i<=up; i+=2) { ans+=c[i]; ans%=mod; } printf("%I64d\n",ans); } return 0;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。