[斯特林数][自然数幂和] Jzoj P4220 WYF的盒子
Description
Input
Output
Sample Input
输入1:4 2 2 97 输入2:1 100 1 10007
Sample Output
输出1:16【样例说明】边长为2的4维立方体的4维体积为16。 输出25050
Data Constraint
题解
- 这道题显然就是要求
- 我们先考虑一下若何求一个i^k,对于第二类斯特林数我们知道Si,j表示为把i个有区别的球放入j个无区别的盒子的方案数(不存在空盒)
- 显然i^k也可以理解为将i个不同的盒子放入k个不同的球的方案数(允许空盒)
- 现在把允许空盒转换为每个盒子至少放一个球的方案数,对于存在k-j空盒的方案数就是 S[k][j]*C(i,j)*j!
- 这样的话我们就可以得出
- 已知,
- 所以,
- 最后的话,这个东西怎么求呢,可以预处理斯特林数,再加个快速幂和防爆longlong的奇技淫巧就好了
代码
1 #include <cstdio> 2 #include <iostream> 3 #include <cstring> 4 #define ll long long 5 #define N 2010 6 using namespace std; 7 ll k,n,m,p,ans,s[N][N]; 8 ll mul(ll x,ll y) 9 { 10 ll l=1e6,a1=x/l,a2=x%l,b1=y/l,b2=y%l; 11 return (a1*b1%p*l%p*l%p+a1*b2%p*l%p+b1*a2%p*l%p+a2*b2%p)%p; 12 } 13 ll ksm(ll a,ll b) 14 { 15 ll r=1; 16 for (;b;b>>=1,a=mul(a,a)) if (b&1) r=mul(r,a); 17 return r; 18 } 19 ll calc(ll n) 20 { 21 ll ans=0; 22 for (ll i=0;i<=k;i++) 23 { 24 ll r=s[k][i]; 25 for (ll j=n+1;j>=n+1-i;j--) r=mul(r,(j%(i+1)==0)?j/(i+1):j); 26 ans=(ans+r)%p; 27 } 28 return ans; 29 } 30 int main() 31 { 32 scanf("%lld%lld%lld%lld",&k,&n,&m,&p),s[0][0]=1; 33 if (k>2000) 34 { 35 for (ll i=m;i<=n;i++) ans=(ans+ksm(i,k))%p; 36 printf("%lld",ans); return 0; 37 } 38 for (ll i=1;i<=k;i++) for (ll j=1;j<=i;j++) s[i][j]=(s[i-1][j-1]+j*s[i-1][j]%p+p)%p; 39 printf("%lld",(calc(n)-calc(m-1)+p)%p); 40 }
转载于:https://www.cnblogs.com/Comfortable/p/10327782.html
[斯特林数][自然数幂和] Jzoj P4220 WYF的盒子相关推荐
- [斯特林数][自然数幂和]JZOJ 4220 WYF的盒子
Description WYF有一个精致的k维立方体盒子(2维为正方形,3维为正方体,以此类推).这个盒子的边长为n,里面有一个边长为n-1的盒子,边长为n-1的盒子里面还有一个边长为n-2的盒子-- ...
- 通俗易懂的斯特林数介绍
通俗易懂的斯特林数介绍 定义 第一类斯特林数 第二类斯特林数 性质 通项 递推 第一类斯特林数 第二类斯特林数 特殊值 第一类斯特林数 第二类斯特林数 快速幂??? 斯特林反演 定义 第一类斯特林数 ...
- BZOJ5093 图的价值(NTT+斯特林数)
显然每个点会提供相同的贡献.于是现在只考虑1号点的贡献.若其度数为i,则在2~n号点选i个连上,剩下的边随便连,这样可以算出答案为 这个式子可以O(n)计算.发现k比较小,于是考虑如何将这个式子化为与 ...
- 自然数幂和 斯特林数
2018 UPD: 其实第二类斯特林数做自然数幂和更简单,这里简单写一下: 由一个基本式子出发 nk=∑i=0k{k i}[n]i n^k=\sum_{i=0}^k\big\{^k_{\ i}\big ...
- 第二类斯特林数与自然数幂和
一般求法 一般求自然数幂和都会用到拉格朗日插值法,但仅当存在逆元的时候能用,给出一种用第二类斯特林数求自然数幂和的方法,时间复杂度是O(k2)O(k2)O(k^2)而不是O(k log k)O(klo ...
- 【BJOI2019】勘破神机(下降幂转自然幂)(第一类斯特林数)(特征方程)
传送门 题解: 完全自己推出来的第一道数学神题. 首先我们知道宽度为222的部分方案数是斐波那契数列. 设fnf_nfn表示长度为nnn的时候方案数,题目要求的实际上是这个东西: ∑n=lr(fnk ...
- 【jzoj4220】【五校联考2day2】【WYF的盒子】【自然数幂和】
题目大意 WYF有一个精致的k维立方体盒子(2维为正方形,3维为正方体,以此类推).这个盒子的边长为n,里面有一个边长为n-1的盒子,边长为n-1的盒子里面还有一个边长为n-2的盒子--最里面的盒子边 ...
- 【学习笔记】自然数幂和
温馨提示: 本文文档大小约\(11KB\). 引入 自然数幂和是一个我们从小就耳熟能详的经典问题.定义\(S(n,k)=\sum^{n}_{i=0} i^k\), 显然\(S(n,k)\)为关于\(n ...
- 51nod 1847 奇怪的数学题(数论/min25筛/杜教筛/斯特林数)
51nod 1847 奇怪的数学题 求解∑i=1n∑j=1nsgcd(i,j),sgcd\sum_{i=1}^n\sum_{j=1}^nsgcd(i,j),sgcd∑i=1n∑j=1nsgcd(i ...
最新文章
- ubuntu wps
- 牛逼!Python的判断、循环和各种表达式(长文系列第②篇)
- EA(Enterprise Architect)UML修改字体大小
- win下 cmd 查询本机开了哪些端口 并查看开启端口的软件
- jzoj4817-square【区间RMQ,二分答案】
- 保存图片验证码到redis数据库
- Python——LOL官方商城皮肤信息爬取(一次练手)
- PhpStorm调用浏览器运行php文件
- 使用freemarker模板生成word文档
- VC++多线程工作笔记0002---线程的运行状态
- 深入浅出LVM on linux
- 4.Unix工作环境
- wdlinux LAMP
- sql连接查询语句中on、where筛选的区别总结
- vba字典重复key_VBA字典数据重复次数
- 成都-峨眉山(乐山)旅游攻略
- Massive MIMO简介
- [Chatter] 错误处理的安全保证等级
- ICESat2学习笔记5 :ICESat-2数据下载
- 线性代数拾遗(2)—— 何时用初等行变换,何时用初等列变换?
热门文章
- 武汉python自动化测试招聘,python自动化测试工程师招聘_Python-自动化测试面试
- 泛生子Q3财报解析:癌症基因检测行业已呈现“燎原之势”
- javascript BOM与DOM介绍
- .net html5页面缓存技术,.net缓存技术详解
- 项目实训 - 智能车系统 - 第七周记录
- python底层与机器底层关系_由Python历史「解密」Python底层逻辑
- 删除除了id号不同,其他都相同的学生冗余信息
- 无线信道信道衰落知识点总结
- 经典书籍《On Java》
- 在Python里通过Pandas和pymysql库批量修改MySQL数据库的字段名称和字段类型