Description

  

  传送门

  

   

  

Solution

  

​  记\(a=\lfloor\frac n p\rfloor\),\(b=n\%p\)。我们尝试使用Lucas定理展开这些组合数,寻找公共部分。以下除法都作整数下取整除法:

\[\begin{aligned}
f(n,k)&=\sum_{i=0}^kC_n^i\mod p\\
&=\sum_{i=0}^{ap-1}C_{n/p}^{i/p}*C_{n\%p}^{i\%p}+\sum_{i=ap}^{n}C_{n/p}^{i/p}*C_{n\%p}^{i\%p}\\
&=(\sum_{i=0}^{a-1}C_{n/p}^i*\sum_{j=0}^{p-1}C_{n\%p}^j)+C_{n/p}^{a}*\sum_{i=0}^bC_{n\%p}^i\\
&=f(n/p,a-1)*f(n\%p,p-1)+C_{n/p}^{k/p}f(n\%p,k\%p)
\end{aligned}
\]

     

  

  所以只需要预处理\(f(0...p-1,0...p-1)\)的值就可以直接计算了。

  

  注意判断k<0的情况,此时\(f\)为0。

  

  

  

  

  

Code

  

#include <cstdio>
using namespace std;
typedef long long ll;
const int MOD=2333,N=2351;
int c[N][N],f[N][N];
inline int plus(int x,int y){return (x+y)%MOD;}
inline int mul(int x,int y){return 1LL*x*y%MOD;}
inline int C(ll n,ll m){
if(n<m) return 0;
if(n<MOD&&m<MOD) return c[n][m];
return mul(C(n/MOD,m/MOD),C(n%MOD,m%MOD));
}
int solve(ll n,ll k){
if(k<0) return 0;
if(n<N&&k<N) return f[n][k];
return plus(mul(solve(n/MOD,k/MOD-1),f[n%MOD][MOD-1]),mul(C(n/MOD,k/MOD),f[n%MOD][k%MOD]));
}
void init(){
c[0][0]=1;
for(int i=1;i<N;i++){
c[i][0]=1;
for(int j=1;j<N;j++) c[i][j]=plus(c[i-1][j],c[i-1][j-1]);
}
for(int i=0;i<N;i++){
f[i][0]=1;
for(int j=1;j<N;j++) f[i][j]=plus(f[i][j-1],c[i][j]);
}
}
int main(){
init();
ll T,n,k;
scanf("%lld",&T);
while(T--){
scanf("%lld%lld",&n,&k);
printf("%lld\n",solve(n,k));
}
return 0;
}

【BZOJ4591】【Shoi2015】超能粒子炮的更多相关文章

  1. bzoj4591 [Shoi2015]超能粒子炮·改

    Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...

  2. [bzoj4591][Shoi2015][超能粒子炮·改] (lucas定理+组合计数)

    Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...

  3. [BZOJ4591][SHOI2015]超能粒子炮·改(Lucas定理+数位DP)

    大组合数取模可以想到Lucas,考虑Lucas的意义,实际上是把数看成P进制计算. 于是问题变成求1~k的所有2333进制数上每一位数的组合数之积. 数位DP,f[i][0/1]表示从高到低第i位,这 ...

  4. BZOJ4591 SHOI2015超能粒子炮·改(卢卡斯定理+数位dp)

    注意到模数很小,容易想到使用卢卡斯定理,即变成一个2333进制数各位组合数的乘积.对于k的限制容易想到数位dp.可以预处理一发2333以内的组合数及组合数前缀和,然后设f[i][0/1]为前i位是否卡 ...

  5. BZOJ4591——[Shoi2015]超能粒子炮·改

    1.题意:求 2.分析:公式恐惧症的同学不要跑啊QAQ 根据lucas定理-- 这一步大家都能懂吧,这是浅而易见的lucas定理转化过程,将每一项拆分成两项 那么下一步,我们将同类项合并 我们观察可以 ...

  6. bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改

    http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...

  7. bzoj4591 [Shoi2015]超能粒子炮·改——组合数学(+求阶乘逆元新姿势)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4591 这题不是很裸啊(所以我就不会了) 得稍微推导一下,看这个博客好了:https://bl ...

  8. 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)

    [BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...

  9. bzoj4591 / P4345 [SHOI2015]超能粒子炮·改

    P4345 [SHOI2015]超能粒子炮·改 题意:求$\sum_{i=1}^{k}C(n,i)\%(P=2333)$ 肯定要先拆开,不然怎么做呢(大雾) 把$C(n,i)$用$lucas$分解一下 ...

  10. 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 95  Solved: 33[Submit][Statu ...

随机推荐

  1. Linux命令的那些事(一)

    回顾一下前文,三大主流操作系统 windows做的最好(更准确最早做图形化界面是windows)其实是图形化界面占有90%的市场份额(PC(个人电脑)机的市场)但是现在发展图形界面做的较好其实Unix ...

  2. Spring中的数据库事物管理

    Spring中的数据库事物管理 只要给方法加一个@Transactional注解就可以了 例如:

  3. GIT问题(二)——add报错

  4. Nginx反向代理负载均衡配置

    1.反向代理概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求 ...

  5. Beta阶段版本控制报告

    版本控制代码及文档要求 在coding.net版本控制; 公开项目,教师.专家.其他同学可以不注册源代码.在此公布git地址. 报告beta阶段2周中,项目的版本控制情况,不包括未在coding.ne ...

  6. “北航Clubs”项目汇报

    一.项目展示 二.用户的痛点与需求 1.北航学生,在百团大战之后,很难再有渠道加入社团,了解社团活动,简直如蒙在鼓里! 2.当你周末想参加一些活动,充实一下枯燥的求学生活时,却发现不知道有哪些社团有活 ...

  7. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...

  8. arcgis for android apk太大

    原来大概都要20多M, 太大的原来是.so文件 arcgis for android api里面有armeabi armeabi-v7a  x86的 每个so都接近10m 要是都保留就20多m了 由于 ...

  9. C# 正则提取字符串(提取一个或多个)

    实例一:string result = ""; string str = "大家好! <User EntryTime='2010-10-7' Email='zhan ...

  10. Beta阶段——第二篇 Scrum 冲刺博客

    i. 提供当天站立式会议照片一张: ii. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 账单收支分明,剩余舍费关联成功 (2) 今天计划完成的工作: 账单删除功能,排序 ...