BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理

Description

曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加
强大的粒子流的神秘装置。超能粒子炮·改相比超能粒子炮,在威力上有了本质的提升。它有三个参数n,k。它会
向编号为0到k的位置发射威力为C(n,k) mod 2333的粒子流。现在SHTSC给出了他的超能粒子炮·改的参数,让你求
其发射的粒子流的威力之和模2333。

Input

第一行一个整数t。表示数据组数。
之后t行,每行二个整数n,k。含义如题面描述。
k<=n<=10^18,t<=10^5

Output

t行每行一个整数,表示其粒子流的威力之和模2333的值。

Sample Input

1
5 5

Sample Output

32

 
$f(n,k)=\sum\limits_{i=0}^{k}C(n,i)$
$=\sum\limits_{i=0}^{k} C(n$%$p,i$%$p)\times C(n/p,i/p)$
设$a=\lfloor k/p \rfloor ,b=k$%$p$
$=\sum\limits_{i=0}^{ap-1}C(n$%$p,i$%$p)\times C(n/p,i/p)+\sum\limits_{i=ap}^{ap+b}C(n$%$p,i$%$p)\times C(n/p,i/p)$
$=\sum\limits_{i=0}^{p-1}C(n$%$p,i)\times \sum\limits_{i=0}^{a-1}C(n/p,i)+C(n/p,a)\times \sum\limits_{i=0}^{b}C(n$%$p,b)$
$=f(n$%$p,p-1)* f(n/p,a-1)+C(n/p,a)* f(n$%$p,b)$
递归求解即可。
 
代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 2550
typedef long long ll;
const int mod=2333;
int c[N][N],f[N][N];
void init() {
int i,j;
for(i=0;i<=mod;i++) c[i][0]=f[i][0]=1;
for(i=0;i<=mod;i++) {
for(j=1;j<=i;j++) {
c[i][j]=(c[i-1][j-1]+c[i-1][j])%mod;
f[i][j]=(f[i][j-1]+c[i][j])%mod;
}
for(j=i+1;j<=mod;j++) f[i][j]=f[i][j-1];
}
}
int Lucas(ll n,ll m) {
if(n<m) return 0;
if(n<mod&&m<mod) return c[n][m];
return Lucas(n/mod,m/mod)*Lucas(n%mod,m%mod)%mod;
}
int solve(ll n,ll k) {
ll a=k/mod;int b=k%mod;
if(k<mod) return f[n%mod][k];
return (solve(n%mod,mod-1)*solve(n/mod,a-1)%mod+Lucas(n/mod,a)*solve(n%mod,b)%mod)%mod;
}
int main() {
init();
int T;
scanf("%d",&T);
ll n,k;
while(T--) {
scanf("%lld%lld",&n,&k);
printf("%d\n",solve(n,k));
}
}
 

最新文章

  1. *HDU1598 并查集
  2. Windows平台下PHP环境搭建
  3. 怎样获取本机的ip地址
  4. LINQ,EF联合查询join
  5. gradle使用国内源
  6. POJ2773 - Happy 2006(欧拉函数)
  7. WebSphere之wasprofile.sh使用
  8. sql必知必会(第四版) 学习笔记二 视图
  9. spring配置日志
  10. Eclipse中配置weka,以及添加算法
  11. textarea高度自适应,随着内容增加高度增加
  12. 多个tab选项卡
  13. Web版记账本开发记录(三)开发过程遇到的问题小结2
  14. s6-8 TCP 拥塞控制
  15. arcgis建立拓扑分析(检验矢量图)
  16. bert 词典扩充方案
  17. Maven仓库—Nexus环境搭建及使用
  18. javascript 易错点、难点笔记
  19. [R]Kick start
  20. linux服务器的性能分析与优化(十三)

热门文章

  1. CodeForces 554B--Ohana Cleans Up
  2. 使用WaveOut API播放WAV音频文件(解决卡顿)
  3. 【收藏】SSH原理与运用
  4. 免费第三方API平台整合
  5. 移动web页面字体大小三
  6. python之-- socket 基础篇
  7. 【搜索引擎】SOLR VS Elasticsearch(2019技术选型参考)
  8. Java函数式接口Consumer
  9. JAVA实现选择排序,插入排序,冒泡排序,以及两个有序数组的合并
  10. Hexo搭建个人blog