P4345-[SHOI2015]超能粒子炮·改【Lucas定理,类欧】
正题
题目链接:https://www.luogu.com.cn/problem/P4345
题目大意
\(T\)组询问,给出\(n,k\)求
\]
对\(2333\)取模的值
\(1\leq T\leq 10^5,1\leq k\leq n\leq 10^{18}\)
解题思路
因为模数很小,可以考虑用\(Lucas\)定理,然后考虑怎么优化复杂度。
对于给出的\(n,k\)分成两个部分,第一部分是由\(k\)前面若干段长度为\(P\)的整段构成,这一部分的答案我们发现对于\(C_{\lfloor\frac{n}{P}\rfloor}^{\lfloor\frac{m}{P}\rfloor}\times C^{n\%p}_{m\% p}\)这两个值,后面那一个值的和是确定的,是\(\sum_{i=1}^kC_{n\%p}^k\),前面那一部分的值我们可以递归下去计算。
然后第二部分是剩下的散段,这个部分我们也是自直接递归下去算就可以了
时间复杂度\(O(T\log n)\)
code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll P=2333;
ll n,k,t,S[P][P],C[P][P];
ll Lucas(ll n,ll k){
if(!k)return 1ll;
if(!C[n%P][k%P])return 0;
return Lucas(n/P,k/P)*C[n%P][k%P]%P;
}
ll solve(ll n,ll k){
if(k<0)return 0;
if(n<P)return S[n][min(n,k)];
ll tmp=solve(n/P,k/P-1)*S[n%P][n%P]%P;
tmp=(tmp+solve(n%P,k%P)*Lucas(n/P,k/P)%P)%P;
return tmp;
}
signed main()
{
C[0][0]=S[0][0]=1;
for(ll i=1;i<P;i++)
for(ll j=0;j<=i;j++)
C[i][j]=((j?C[i-1][j-1]:0)+C[i-1][j])%P;
for(ll i=1;i<P;i++){
S[i][0]=C[i][0];
for(ll j=1;j<=i;j++)
(S[i][j]=S[i][j-1]+C[i][j])%=P;
}
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&n,&k);
printf("%lld\n",solve(n,k));
}
return 0;
}
P4345-[SHOI2015]超能粒子炮·改【Lucas定理,类欧】的更多相关文章
- bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...
- P4345 [SHOI2015]超能粒子炮·改 Lucas
\(\color{#0066ff}{ 题目描述 }\) 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒 ...
- 【bzoj4591】[Shoi2015]超能粒子炮·改 Lucas定理
题目描述 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提 ...
- [bzoj4591][Shoi2015][超能粒子炮·改] (lucas定理+组合计数)
Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...
- [BZOJ4591][SHOI2015]超能粒子炮·改(Lucas定理+数位DP)
大组合数取模可以想到Lucas,考虑Lucas的意义,实际上是把数看成P进制计算. 于是问题变成求1~k的所有2333进制数上每一位数的组合数之积. 数位DP,f[i][0/1]表示从高到低第i位,这 ...
- bzoj4591 / P4345 [SHOI2015]超能粒子炮·改
P4345 [SHOI2015]超能粒子炮·改 题意:求$\sum_{i=1}^{k}C(n,i)\%(P=2333)$ 肯定要先拆开,不然怎么做呢(大雾) 把$C(n,i)$用$lucas$分解一下 ...
- 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告
P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...
- BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理
BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理 Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以 ...
- loj 2038 / 洛谷 P4345 [SHOI2015] 超能粒子炮・改 题解
好玩的推式子 题目描述 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒子炮・改相比超能粒子炮,在威力上 ...
- P4345 [SHOI2015]超能粒子炮·改
传送门 看到数据和模数大小就知道要上 lucas 了 然后开始愉快地推公式: 答案为 $\sum _{i=0}^kC_{n}^{i}\ (mod\ 2333)$ 设 $f [ i ] [ j ] = ...
随机推荐
- redis数据同步之redis-shake
redis-shake简介 redis-shake是阿里开源的用于redis数据同步的工具,基本功能有: 恢复restore:将RDB文件恢复到目的redis数据库. 备份dump:将源redis的全 ...
- redisson 分布式加锁
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- DataTemplateSelector介绍
DataTemplateSelector可以帮助我们实现动态选择数据绑定的模版,如通过ListView+DataTemplateSelector实现微信朋友圈或聊天列表效果. Github已有聊天效果 ...
- 【转】关于DNS不得不说的一些事
转自:https://www.cnblogs.com/rjzheng/p/11395695.html 引言 今天我们来聊聊DNS.所谓域名系统(Domain Name System缩写DNS,Doma ...
- 使用Spark开发应用程序,并将作业提交到服务器
1.pycharm编写spark应用程序 由于一些原因在windows上配置未成功(应该是可以配置成功的).我是在linux上直接使用pycharm,在linux的好处是,环境可能导致的一切问题不复存 ...
- Java String 综述(上篇)
摘要: Java 中的 String类 是我们日常开发中使用最为频繁的一个类,但要想真正掌握的这个类却不是一件容易的事情.笔者为了还原String类的真实全貌,先分为上.下两篇博文来综述Java中的S ...
- C# ArrayPool 源码解读之 byte[] 池化
一:背景 1. 讲故事最近在分析一个 dump 的过程中发现其在 gen2 和 LOH 上有不少size较大的free,仔细看了下,这些free生前大多都是模板引擎生成的html片段的byte[]数组 ...
- linux-解决/usr/bin/which: no ssh-copy-id in 和ssh: Could not resolve hostname问题
使用yum install openssh-clients 安装命令 有的系统没有此命令 有的系统缺省 就包含这一条命令! 但是我的测试机没有发现此命令 只能这样安装! 这时有报错了 1 2 [ro ...
- Tomcat 端口配置及原理详解
1. tomcat 文件配置详细说明 tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同.端口配置路径为tomcat\ c ...
- 聊聊 Jmeter 如何并发执行 Python 脚本
1. 前言 大家好,我是安果! 最近有小伙伴后台给我留言,说自己用 Django 写了一个大文件上传的 Api 接口,现在想本地检验一下接口并发的稳定性,问我有没有好的方案 本篇文章以文件上传为例,聊 ...