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 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
 
随机推荐
- LOJ 3093: 洛谷 P5323: 「BJOI2019」光线
			
题目传送门:LOJ #3093. 题意简述: 有 \(n\) 面玻璃,第 \(i\) 面的透光率为 \(a\),反射率为 \(b\). 问把这 \(n\) 面玻璃按顺序叠在一起后,\(n\) 层玻璃的 ...
 - C++经典面试题(最全,面中率最高)
			
C++经典面试题(最全,面中率最高) 1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与fre ...
 - 通过htaccess文件配置多个一级域名指向根目录的子文件夹
			
创建.htaccess文件,在Windows系统创建时要写成“.htaccess.”,不带双引号,否则不会创建成功. <IfModule mod_rewrite.c> Options +F ...
 - GitHub上优秀的Go开源项目
			
近一年来,学习和研究Go语言,断断续续的收集了一些比较优秀的开源项目,这些项目都非常不错,可以供我们学习和研究Go用,从中可以学到很多关于Go的使用.技巧以及相关工具和方法.我把他们整理发出来,大家有 ...
 - 生活工作必备之SMART原则
			
所谓SMART原则,即: 1. 目标必须是具体的(Specific) 2. 目标必须是可以衡量的(Measurable) 3. 目标必须是可以达到的(Attainable) 4. 目标必须和主要目标具 ...
 - node 相关网站
			
包管理网站:https://www.npmjs.com/
 - LeetCode(60): 第k个排列
			
Medium! 题目描述: 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列. 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" ...
 - laravel console - 自定义命令
			
在改造一个支付流程,新的流程加入了一个新的数据表字段,但是这个新的字段需要通过计算来填充,所以为了兼容历史数据,必须将已有的数据行重新计算一遍该字段. 这时使用 laravel console 命令就 ...
 - 模拟js中注册表单验证
			
示例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
 - 基于GTID环境的数据恢复
			
下面说一个线上环境的数据恢复案例,线上环境误操作的事情,随时都有可能发生的,这时候运维DBA或者DBA会想,没人会傻到把数据库干掉的吧?又或者没有会闲得蛋痛删除了几条数据又想恢复这么无聊吧?适适这样的 ...