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

999999598=2*13*5281*7283,对于每个小质数依次计算,最后用中国剩余定理合并即可。

对于贝尔数,有

\[\begin{eqnarray*}B_{p+n}&\equiv&B_n+B_{n+1}(\bmod p)\\
B_{p^m+n}&\equiv&mB_n+B_{n+1}(\bmod p)\end{eqnarray*}\]

根据这两个公式,可以从高位到低位递推,当$n<p$时直接输出解。时间复杂度$O(p^2\log p)$。

#include<cstdio>
typedef long long ll;
const int N=7284,P=999999598;
ll n,m;int a[4]={2,13,5281,7283},f[N],s[2][N],i,j,x;
int cal(int x,ll n){
int i,j,k,m=0,b[N],c[N],d[70];
for(i=0;i<=x;i++)b[i]=f[i]%x;
while(n)d[m++]=n%x,n/=x;
for(i=1;i<m;i++)for(j=1;j<=d[i];j++){
for(k=0;k<x;k++)c[k]=(b[k]*i+b[k+1])%x;
c[x]=(c[0]+c[1])%x;
for(k=0;k<=x;k++)b[k]=c[k];
}
return c[d[0]];
}
ll pow(ll a,ll b,ll p){ll t=1;for(a%=p;b;b>>=1LL,a=a*a%p)if(b&1LL)t=t*a%p;return t;}
ll bell(ll n){
if(n<N)return f[n];
ll t=0;
for(int i=0;i<4;i++)t=(t+(P/a[i])*pow(P/a[i],a[i]-2,a[i])%P*cal(a[i],n)%P)%P;
return t;
}
int main(){
f[0]=f[1]=s[0][0]=1,s[0][1]=2;
for(i=2,x=1;i<N;i++,x^=1)for(f[i]=s[x][0]=s[x^1][i-1],j=1;j<=i;j++)s[x][j]=(s[x^1][j-1]+s[x][j-1])%P;
scanf("%lld%lld",&n,&m);
printf("%lld",pow(m,bell(n),P+1));
return 0;
}

  

BZOJ3501 : PA2008 Cliquers Strike Back的更多相关文章

  1. bzoj 3501 PA2008 Cliquers Strike Back——贝尔数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角形 p^2 地预处理 p 以内的贝尔数.可以模(mod-1)(它是每个分解下 ...

  2. bzoj 3501 PA2008 Cliquers Strike Back —— 贝尔数

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

  3. BZOJ3500 : PA2008 Cliquers

    设g[i]表示n=i时的答案,则OEIS上可以找到如下递推式: g[i]=g[i-1]+g[i-2]-g[i-5]-g[i-7]+... 其中符号为++--交替,第i项为f[i],f[1]=1,f[2 ...

  4. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  5. ZOJ2317-Nice Patterns Strike Back:矩阵快速幂,高精度

    Nice Patterns Strike Back Time Limit: 20000/10000MS (Java/Others)Memory Limit: 128000/64000KB (Java/ ...

  6. 【HDU 5808】 Price List Strike Back (整体二分+动态规划)

    Price List Strike Back There are nn shops numbered with successive integers from 11 to nn in Bytelan ...

  7. [武汉集训] Cliquers

    题意 设把\(n\)个不同元素分成若干个大小相等的集合的方案个数为\(res\),求\(m^{res}\)模\(10^9-401\)后的余数. (n,m不超过2*10^9) 分析 可以知道,所求答案为 ...

  8. Cobalt Strike 服务器搭建及使用

    Cobalt Strike使用中的一些坑(一) http://www.cnblogs.com/miaodaren/articles/7829793.html cobaltstrike3.8服务器搭建及 ...

  9. Cobalt Strike DNS通讯实例

    一.域名设置 如果没有域名,可以参考另一篇博客,申请Freenom免费域名,并使用DNSPod解析 链接:https://www.cnblogs.com/ssooking/p/6364639.html ...

随机推荐

  1. 分布式锁--Redis小试牛刀

    参考文章: Redis分布式锁的正确实现方式 分布式锁看这篇就够了 在这两篇文章的指引下亲测 Redis分布式锁 引言 分布式系统一定会存在CAP权衡问题,所以才会出现分布式锁 什么是CAP理论? 为 ...

  2. OpenGL ES 2.0 Shader 调试新思路(二): 做一个可用的原型

    OpenGL ES 2.0 Shader 调试新思路(二): 做一个可用的原型 目录 背景介绍 请参考前文OpenGL ES 2.0 Shader 调试新思路(一): 改变提问方式 优化 ledCha ...

  3. jQuery1.11源码分析(2)-----Sizzle源码中的正则表达式[原创]

    看完了上篇,对Sizzle有了一个大致的了解,我们接下来就可以正式开始啃Sizzle的源码了.上来就讲matcher难度太大,先来点开胃菜,讲讲Sizzle中的各个正则表达式的作用吧(本来还想讲初始化 ...

  4. 10个造型奇特的css3进度条(有的html被编辑器转义了,上面的代码还是OK的)。。。转载

    <div id="caseVerte"> <div id="case1"></div> <div id="c ...

  5. 第6月第10天 svn checkout sqlite3

    1. http://www.cnblogs.com/xuling/p/5602036.html 2. http://blog.csdn.net/qq_26819733/article/details/ ...

  6. JDK1.8源码Collections

    正文: 一.概述: 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成.它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 col ...

  7. 【转载】maven pom详解(2)

    setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件:而pom.xml主要描述了项目的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和li ...

  8. 计算机底层知识拾遗(九)深入理解内存映射mmap

    内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点. 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现 ...

  9. Java ListIterator(迭代器)

    LIstIterator是一个更加强大的Iterator的子类型,它只能用于各种List类的访问,尽管Iterator只能向前移动,但是ListIterator可以双向移动,它还可以产生相对于迭代器在 ...

  10. MediatR 中介模式

    使用MediatR完成基于内存级别的消息发布订阅 在微服务架构中领域驱动模型中处理领域事件的相关操作 在区分好领域模型后,就拿代码中来说嘛,用户领域中添加用户操作可能或存在跟用户相关的一些领域事件,在 ...