loj#2038. 「SHOI2015」超能粒子炮・改
题目链接
题解
卢卡斯定理
之后对于%p分类
剩下的是个子问题递归

n,k小于p的S可以预处理,C可以卢卡斯算
代码
#include<cstdio>
#include<algorithm>
inline long long read() {
long long x = 0,f = 1;
char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = getchar();
return x * f;
}
#define LL long long
const int P = 2333;
const int maxn = P + 7;
int c[maxn][maxn],s[maxn][maxn];
inline void add(int &x,int y) {
x = x + y >= P ? x + y - P : x + y;
}
int C(LL n,LL k) {
if(k < 0 || k > n)return 0;
if(n<P)return c[n][k];
LL a = n / P,b = k/P;
return C(a,b) * c[n % P][k % P] % P;
}
int S(LL n,LL k) {
if(k < 0) return 0;
LL a = n/P,b = k / P;
return (S(a,b - 1) * s[n % P][P - 1] + C(a,b) * s[n % P][k % P]) % P;
}
void pre() {
c[0][0] = 1;
for(int i = 0;i < P - 1;++ i)
for(int j = 0;j <= i;++ j)
add(c[i + 1][j],c[i][j]),add(c[i + 1][j + 1],c[i][j]);
for(int i = 0;i < P;++ i) {
s[i][0] = c[i][0];
//if(i == 2332) puts("cnm");
for(int j = 1;j < P;++ j) {
//if(j == 2332) puts("cnm");
s[i][j] = s[i][j - 1] , add(s[i][j],c[i][j]);
}
}
}
int main() {
pre();
LL T = read();
for(int i = 1;i <= T;++ i) {
LL a = read(),b = read();
printf("%lld\n",S(a,b));
}
return 0;
}
loj#2038. 「SHOI2015」超能粒子炮・改的更多相关文章
- 【LOJ】#2038. 「SHOI2015」超能粒子炮・改
题解 用lucas随便分析一波就出来了 \(\binom{n}{k} = \binom{n % p}{k % p}\binom{n / p}{k / p}\) 那么对于一个余数r,如果r <= ...
- 「SHOI2015」超能粒子炮・改
「SHOI2015」超能粒子炮・改 给你\(T\)组询问,每组询问给定参数\(n,k\),计算\(\sum\limits_{i=0}^k\dbinom{n}{i}\). \(T\leq10^5,n,k ...
- BZOJ 4591 【SHOI2015】 超能粒子炮·改
题目链接:超能粒子炮·改 这道题的大体思路就是用\(lucas\)定理,然后合并同类项,就可以得到一个可以递归算的式子了. 我们用\(S(n,k)\)表示答案,\(p\)表示模数(\(2333\)是一 ...
- bzoj4591 【Shoi2015】超能粒子炮·改
由Lucas定理C(n,k)=C(n/2333,k/2333)*C(n%2333,k%2333)%2333 则ans=ΣC(n,i),(i<=k) =C(n/2333,0)*C(n%2333, ...
- loj 2038 / 洛谷 P4345 [SHOI2015] 超能粒子炮・改 题解
好玩的推式子 题目描述 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒子炮・改相比超能粒子炮,在威力上 ...
- [LOJ 2039] 「SHOI2015」激光发生器
[LOJ 2039] 「SHOI2015」激光发生器 链接 链接 题解 分为两个部分 第一个是求直线之间的交点找到第一个触碰到的镜面 第二个是求直线经过镜面反射之后的出射光线 第一个很好做,第二个就是 ...
- Bzoj 4591: [Shoi2015]超能粒子炮·改 数论,Lucas定理,排列组合
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 178 Solved: 70[Submit][Stat ...
- bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...
- 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
[BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
随机推荐
- D3开发中的资料整理
D3开发台阶比较高,需要对html,css,js非常熟练,还要对SVG非常熟悉,SVG不会就不要开发D3了,下面给大家推荐一本资料,为大家未来的开发提供便利. 这个框架产品不支持ie8,是这个产品的特 ...
- Libevent源码分析系列
1.使用libevent库 源码那么多,该怎么分析从哪分析呢?一个好的方法就是先用起来,会用了,然后去看底层相应的源码,这样比较有条理,自上向下掌握.下面用libevent库写个程序,每隔1秒 ...
- ES系列十一、ES的index、store、_source、copy_to和all的区别
1.基本概念 1.1._source 存储的原始数据._source中的内容就是搜索api返回的内容,如: { "query":{ "term":{ &q ...
- mysql caching_sha2_password异常分析
使用navicat连接mysql报错 解决办法: 通过命令行登录mysql后,输入: alter user 'root'@'localhost' IDENTIFIED WITH mysql_nativ ...
- java linux ftp问题
java写的ftp上传类,本地测试环境可以用,阿里云服务器不可用,两者系统均为centos.经过测试,发现appche的ftpclient类不可用,换成sun的ftpclient可以使用.
- 安装xcache3.0.3/3.2,为php加速
安装xcache,为php加速 1.安装 # tar xf xcache-3.0.3.tar.bz2 # cd xcache-3.0.3 # /usr/local/php/bin/phpize # ...
- skearn自学路径
sklearn学习总结(超全面) 关于sklearn,监督学习几种模型的对比 sklearn之样本生成make_classification,make_circles和make_moons pytho ...
- javascript 练习题目答案1
以下是这个教程的答案 https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/00143 ...
- C#中Convert.ToInt32、int.TryParse、(int)和int.Parse四者的区别
Convert.ToInt32.(int)和int.Parse三者的区别: 首先:Convert.ToInt32 适合将object类类型转换成int类型,如Convert.ToInt32(sessi ...
- Laravel API 限速异常 HTTPException Too Many Attemps
最近线上 Laravel 错误日志发现了一个异常 HTTPException Too Many Attemps 而我一个同事在本地开发的过程中也频繁遇到这个异常.测试环境:Laravel 5.5. 网 ...