贝尔数C语言,bzoj 3501 PA2008 Cliquers Strike Back——贝尔数

用贝尔三角形 p^2 地预处理 p 以内的贝尔数。可以模(mod-1)(它是每个分解下的质因子的倍数,所以不影响分开算的时候)。

用公式:\( Bell[n+p^{m}]=m*Bell[n]+Bell[n+1] (mod p) \)  \( Bell[n+p]=Bell[n]+Bell[n+1] (mod p) \)  把 n 看成 p 进制,O( p^2 * log m ) 地算。

大概就是从低位走到高位。一开始自己的 b 数组是 Bell[ 0 ] ~ Bell[ p ] ;枚举每一个 p 进制位(从第二位,即 p1 开始),在该位上枚举从1到d[ i ],做一次让角标 + pi 的操作;

这样做完,自己的 b 数组存的就是 Bell[ d[m-1]*pm-1+d[m-2]*pm-2+...+0 ] ~ Bell[ d[m-1]*pm-1+d[m-2]*pm-2+...+p ] 的值。只要输出 b[ d[0] ] 就行了。

#include

#include

#include

#include

#define ll long long

using namespace std;

const int mod=,M=mod-,N=;

ll n,m; int p[]={,,,},ans,f[N+],s[][N+];

void upd(int &x,int md){x>=md?x-=md:;}

int pw(int x,int k,int md)

{int ret=;while(k){if(k&)ret=(ll)ret*x%md;x=(ll)x*x%md;k>>=;}return ret;}

int calc(ll n,int p)

{

if(n<=N)return f[n]%p;

int b[N+],c[N+],d[],lm=;

for(int i=;i<=p;i++)b[i]=f[i]%p;

while(n)d[lm++]=n%p,n/=p;

for(int i=;i

for(int j=;j<=d[i];j++)

{

for(int k=;k

c[p]=c[]+c[];upd(c[p],p);

for(int k=;k<=p;k++)b[k]=c[k];

}

return b[d[]];

}

int main()

{

int i,j;bool fx;

f[]=s[][]=;

for(i=,fx=;i<=N;i++,fx=!fx)//i=1,len=2(0~i)

for(f[i]=s[fx][]=s[!fx][i-],j=;j<=i;j++)

s[fx][j]=s[!fx][j-]+s[fx][j-],upd(s[fx][j],M);//%M?its lcm so ok

scanf("%lld%lld",&n,&m);

for(i=;i

ans=(ans+(ll)(M/p[i])*pw(M/p[i],p[i]-,p[i])%M*calc(n,p[i]))%M;

printf("%d\n",pw(m%mod,ans,mod));

return ;

}

bzoj 3501 PA2008 Cliquers Strike Back —— 贝尔数

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角预处理贝尔数,拆模数并在 \( p \) 进制下使用公式,因为这样每次角标增 ...

BZOJ3501 &colon; PA2008 Cliquers Strike Back

\[\begin{eqnarray*}ans&=&m^{\sum_{i=1}^n Stirling2(n,i)\bmod 999999598}\bmod 999999599\\&amp ...

贝尔数(来自维基百科)&amp&semi; Stirling数

贝尔数   贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):   Bell Number Bn是基数为n的集合 ...

HDU 2512 一卡通大冒险&lpar;第二类斯特林数&plus;贝尔数&rpar;

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 题目大意:因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部 ...

贝尔数--Codeforces908E&period; New Year and Entity Enumeration

给n<=50个长度m<=1000的二进制数,记他们为集合T,求满足下面条件的集合S数:令$M=2^m-1$,1.$a \epsilon S \Rightarrow a \ \ xor \ ...

hdu2643&amp&semi;&amp&semi;hdu2512——斯特林数&amp&semi;&amp&semi;贝尔数

hdu2643 题意:$n$ 个人的排名情况数($n \leq 100$) 分析:考虑 $n$ 个有区别的球放到 $m$ 个有区别的盒子里.无空盒的方案数为 $m!\cdot S(n, m)$. 这题 ...

hdu4767 Bell——求第n项贝尔数

题意 设第 $n$ 个Bell数为 $B_n$,求 $B_n \ mod  \ 95041567$.($1 \leq  n  \leq  2^{31}$) 分析 贝尔数的概念和性质,维基百科上有,这里 ...

BZOJ&period;2159&period;Crash的文明世界&lpar;斯特林数 树形DP&rpar;

BZOJ 洛谷 挺套路但并不难的一道题 \(Description\) 给定一棵\(n\)个点的树和\(K\),边权为\(1\).对于每个点\(x\),求\(S(x)=\sum_{i=1}^ndis( ...

BZOJ 1485&colon; &lbrack;HNOI2009&rsqb;有趣的数列&lpar; catalan数 &rpar;

打个表找一下规律可以发现...就是卡特兰数...卡特兰数可以用组合数计算.对于这道题,ans(n) = C(n, 2n) / (n+1) , 分解质因数去算就可以了... -------------- ...

随机推荐

前端那点事儿——Tocify自动生成文档目录

今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置:窗口滑动也能自动更新目录的焦点. 效果 框架 原来使用的是一个开源的jquery-ui控件——tocify.js,它可以遍历页面 ...

chaper3&lowbar;exercise&lowbar;Uva1585&lowbar;score

#include #include using namespace std; int main(void) { , j = ; string ...

SpringMvc 使用poi导入导出Excel

Util类 package com.common.util; public class ExportUtil { private XSSFWorkbook wb = null; private XSS ...

Android ListView实现仿iPhone实现左滑删除按钮

需要自定义ListView.这里就交FloatDelListView吧. 复写onTouchEvent方法.如下: @Override public boolean onTouchEvent(Moti ...

Mysql中Key与Index的区别

mysql的key和index多少有点令人迷惑,这实际上考察对数据库体系结构的了解的. 1 key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查 ...

PHP&plus;Mysql————表单数据插入数据库及数据提取

站点在进行新用户注冊时,都会将用户的注冊信息存入数据库中,须要的时候再进行提取.今天写了一个简单的实例. 主要完毕下面几点功能: (1)用户进行注冊,实现password反复确认,验证码校对功能. ( ...

js的Date对象

1.构造Date对象 var dt = new Date(); //获取当地包含日期和时间的对象,格式为:Thu Aug 31 2017 09:15:43 GMT+0800 (中国标准时间) 2.使用 ...

听翁恺老师mooc笔记(6)--指针运算

指针值加1就是将指针值加上sizeof(指针所指变量的类型) 1+1=2,那么指针加1是加上了1这个数字吗?试一下,在代码中定义了char数组,char也是整数,数组名是ac,ac中有10个元素,0- ...

raid5 &sol; raid5e &sol; raid5ee的性能对比及其数据恢复原理

RAID 5 是一种存储性能.数据安全和存储成本兼顾的存储解决方案. RAID 5可以理解为是RAID 0和RAID 1的折中方案.RAID 5可以为系统提供数据安全保障,但保障程度要比Mirror低 ...

&lbrack;Laravel&rsqb; 14 - REST API&colon; Laravel from scratch

前言 一.基础 Ref: Build a REST API with Laravel API resources Goto: [Node.js] 08 - Web Server and REST AP ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值