博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj1485] [HNOI2009]有趣的数列
阅读量:4563 次
发布时间:2019-06-08

本文共 1502 字,大约阅读时间需要 5 分钟。

  找规律题。。。

  首先观察样例解释可得。我们只要确定奇数位的情况就行了,并且只要i<=第i个奇数<=2*i-1就是合法的= =

  然后我就一直在找规律..................

  最后弃疗跑去看题解....才发现答案不就是卡特兰数吗。。为啥我看半天都没看出来= =

  由搜索引擎可得,h(n)=C(2*n,n)/(n+1)。。。求组合数的话我写了分解质因数...

  顺便学(chao)习(xi)了一下黄学长的分解质因数。。我以前写的都是什么鬼QAQ

  写了个快速幂竟然比直接乘慢orz

1 #include
2 #include
3 #include
4 #define ll long long 5 using namespace std; 6 const int maxn=2000023; 7 bool cant[maxn]; 8 int pri[maxn],num,mn[maxn],sum[maxn]; 9 ll ans;10 int i,j,k,n,m,sxt;11 inline void prerun(int x){12 register int i,j,k;13 for(i=2;i<=x;i++){14 if(!cant[i])pri[++num]=i,mn[i]=num;15 for(k=pri[j=1]*i;k<=x&&j<=num;k=pri[++j]*i){16 cant[k]=1,mn[k]=j;17 if(!(i%pri[j]))break;18 }19 }20 }21 inline void upd(int x,int v){22 while(x>1)23 sum[mn[x]]+=v,x/=pri[mn[x]];24 }25 inline int power(ll a,int b){26 ll c=1;27 while(b){28 if(b&1){c*=a;if(c>=sxt)c%=sxt;}29 a*=a;if(a>=sxt)a%=sxt;30 b>>=1;31 }32 return c;33 }34 int main(){35 scanf("%d%d",&n,&sxt);36 prerun(n<<1);37 for(i=n<<1;i>n;i--)upd(i,1);38 for(;i;i--)upd(i,-1);39 upd(n+1,-1);40 ans=1;41 for(i=1;i<=num;i++){42 ans*=power(pri[i],sum[i]);43 if(ans>=sxt)ans%=sxt;44 }45 printf("%lld\n",ans);46 return 0;47 }
View Code

其实那个合法的条件也可以变一下,将数列里的每个数都减去(i-1)之后就是1<=第i个奇数<=i 。。。就是卡特兰数了>_<

转载于:https://www.cnblogs.com/czllgzmzl/p/5187299.html

你可能感兴趣的文章
踩vue的bug
查看>>
Ansible安装及配置
查看>>
浅析Sql Server参数化查询
查看>>
CodeBlocks 配置
查看>>
机器学习:随机森林
查看>>
[网络流24题] 试题库问题
查看>>
面试分享:应届前端面试经历
查看>>
Essentially No Barriers in Neural Network Energy Landscape
查看>>
A pure L1-norm principal component analysis
查看>>
SVM
查看>>
Dimension reduction in principal component analysis for trees
查看>>
Deep Linear Networks with Arbitrary Loss: All Local Minima Are Global
查看>>
golang开发:类库篇(五)go测试工具goconvey的使用
查看>>
浅谈限流(下)实战
查看>>
jpa(Java Persistence API)
查看>>
spring之雜談
查看>>
vue修改启动的端口和host
查看>>
【Django】Mac 安装pip3-install-mysqlclient 报错
查看>>
vue引入elementUI(第三方样式库)
查看>>
django的增删改查
查看>>