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的值。
设S(n,k)=Σ C(n,i) i=0..k
根据lucas定理可以得到
S(n,k) mod p = [ S(n/p,k/p-1)*S(n mod p,p-1)+C(n/p,k/p)*S(n mod p,k mod p) ] mod p
除法均向下取整
预处理0≤n,k<P的C,S值,根据上式递归计算
单次询问时间复杂度为O(log23332n)
#include<cstdio>
typedef long long lint;
const int P=;
int c[P][P],s[P][P],t;
int C(lint n,lint k){
if(k<||k>n)return ;
if(n<P)return c[n][k];
lint a=n/P,b=k/P;
return C(a,b)*c[n%P][k%P]%P;
}
int S(lint n,lint k){
if(k<)return ;
lint a=n/P,b=k/P;
return (S(a,b-)*s[n%P][P-]+C(a,b)*s[n%P][k%P])%P;
}
inline void inc(int&a,int b){
a+=b;
if(a>=P)a-=P;
}
inline lint input(){
lint x=;
int c=getchar();
while(c>||c<)c=getchar();
while(c>&&c<)x=x*+c-,c=getchar();
return x;
}
int main(){
c[][]=;
for(int i=;i<P-;i++){
for(int j=;j<=i;j++){
inc(c[i+][j],c[i][j]);
inc(c[i+][j+],c[i][j]);
}
}
for(int i=;i<P;i++){
s[i][]=c[i][];
for(int j=;j<P;j++)inc(s[i][j]=s[i][j-],c[i][j]);
}
t=input();
while(t--){
lint a=input(),b=input();
printf("%d\n",S(a,b));
}
return ;
}

最新文章

  1. 命令行提交本地项目到github上
  2. MongoDB系列一:CentOS7.2下安装mongoDB3.2.8
  3. mvc模型验证
  4. css3渐变之linear-gradient与-webkit-linear-gradient写法异同
  5. SharePoint自动化系列——Create a local user and add to SharePoint
  6. C 构造一个 简单配置文件读取库
  7. 03 - Oracle文件概述
  8. 记“debug alipay”一事
  9. Android手势识别(单击 双击 抬起 短按 长按 滚动 滑动)
  10. 【NOIP模拟】cut
  11. 【转】rinex
  12. java接口变量问题
  13. jenkins 自动化部署实战
  14. 微信小程序上传后发布或者体验版测试无数据解决办法
  15. 公司-半导体:Micron
  16. RIPS PHP源码静态分析(转)
  17. [转]ZooKeeper学习第一期---Zookeeper简单介绍
  18. Codeforces Round #523 (Div. 2) F. Katya and Segments Sets (交互题+思维)
  19. JDBC及Filter
  20. ORM练习项目-图书管理系统(BMS)实现细节

热门文章

  1. UVa 10655 n次方之和(矩阵快速幂)
  2. Same Tree,判断两个二叉树是不是相同的树,结构相同,每个节点的值相同
  3. Java中代码点与代码单元(转)
  4. Qt5需要的_libstdc++6_4.7.2-5_???.deb
  5. js 判断浏览器类型及版本
  6. UVA-10129 Play on Words (判断欧拉道路的存在性)
  7. vue 点击按钮 input框架获取焦点的方法
  8. BZOJ1074 [SCOI2007]折纸origami
  9. Beta阶段第2周/共2周 Scrum立会报告+燃尽图 12
  10. vue.js 源代码学习笔记 ----- codegenEvents.js