【bzoj4591】超能粒子炮·改
Solution
首先这个模数是一个质数
然后看一下那个\(k\)和\(n\)的范围。。行吧Lucas定理咯
但是如果直接求:
\]
那。。稳稳的T啊。。。所以要化一下式子,我们令\(k=ap+b\):
\sum\limits_{i=0}^{k}\binom n i&\equiv \sum\limits_{i=0}^k \binom {i/p} {n/p}\binom {i\% p}{n\%p}(mod\ p)\\
&\equiv \sum\limits_{i=0}^{ap-1}\binom {i/p} {n/p}\binom {i\% p}{n\%p}+\sum\limits_{i=ap}^{ap+b}\binom {i/p} {n/p}\binom {i\% p}{n\%p}(mod\ p)\\
&\equiv \sum\limits_{i=0}^{a-1}\binom {i} {n/p}\sum\limits_{i=0}^{p-1}\binom {i}{n\%p}+\binom a {n/p}\sum\limits_{i=0}^b\binom {i}{n\%p}
\end{aligned}
\]
然后因为\(p\)比较小(只有\(2333\)真是2333)
所以我们可以直接暴力处理出\(n,m<=2333\)的\(\binom n m\)的的前缀和
然后对于范围内的直接调用,范围外的用上面那个式子递归处理就好了
代码大概长这个样子:
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int MOD=2333;
ll c[MOD+10][MOD+10],sum[MOD+10][MOD+10];
ll n,k,T,ans;
void prework(int n);
ll Lucas(ll n,ll m);
ll Min(ll x,ll y){return x<y?x:y;}
ll f(ll n,ll k);
int main(){
#ifndef ONLINE_JUDGE
freopen("a.in","r",stdin);
#endif
ll a,b;
scanf("%lld",&T);
prework(MOD);
for (int o=1;o<=T;++o){
scanf("%lld%lld",&n,&k);
printf("%lld\n",f(n,k));
}
}
void prework(int n){
c[0][0]=1;
for (int i=1;i<=n;++i){
c[i][0]=1; c[i][i]=1;
for (int j=1;j<i;++j)
c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;
}
for (int i=0;i<=n;++i){
sum[i][0]=c[i][0];
for (int j=1;j<=n;++j)
sum[i][j]=(sum[i][j-1]+c[i][j])%MOD;
}
}
ll Lucas(ll n,ll m){
if (n<m) return 0;
if (n<MOD&&m<MOD) return c[n][m];
return c[n%MOD][m%MOD]*Lucas(n/MOD,m/MOD)%MOD;
}
ll f(ll n,ll k){
if (k<0) return 0;
if (n<MOD&&k<MOD) return sum[n][k];
return (f(n/MOD,min(k/MOD-1,n/MOD))*sum[n%MOD][MOD-1]%MOD+Lucas(n/MOD,k/MOD)*sum[n%MOD][k%MOD]%MOD)%MOD;
}
【bzoj4591】超能粒子炮·改的更多相关文章
- 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
[BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
- 【BZOJ4591】超能粒子炮·改(Lucas定理,组合计数)
题意: 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提 ...
- 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 95 Solved: 33[Submit][Statu ...
- bzoj4591 / P4345 [SHOI2015]超能粒子炮·改
P4345 [SHOI2015]超能粒子炮·改 题意:求$\sum_{i=1}^{k}C(n,i)\%(P=2333)$ 肯定要先拆开,不然怎么做呢(大雾) 把$C(n,i)$用$lucas$分解一下 ...
- 【bzoj4591】[Shoi2015]超能粒子炮·改 Lucas定理
题目描述 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提 ...
- bzoj4591 [Shoi2015]超能粒子炮·改
Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...
- [bzoj4591][Shoi2015][超能粒子炮·改] (lucas定理+组合计数)
Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威 ...
- 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^ ...
- 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告
P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...
随机推荐
- Ubuntu 安装python后,安装python-dev
1.通常情况下: sudo apt install python-dev 或者 在 sudo apt install python 命令下安装应该也附带了 python-dev 上述 pyhthon ...
- vue route.go 载入刷新
vue route 重新载入刷新: this.$router.go({path : 'path' , query: { param: this.param} })
- Linux系统网络安装——基于pxe+dhcp+nfs+tftp+kickstart
原文发表于:2010-09-05 转载至cu于:2012-07-21 一.原理简介 PXE(preboot execute environment)工作于Client/Server的网络模式,支持工作 ...
- JAVA学习笔记--组合与继承
JAVA一个很重要的功能就是代码的可复用性,代码复用可以大大提升编程效率.这里主要介绍两种代码复用方式:组合和继承. 一.组合 组合比较直观,只需在新的类中产生现有类的对象,新的类由现有类的对象组成, ...
- Could not resolve placeholder 'jdbc.url' in value "${jdbc.url}"
写完接口之后,发现报了这个错误,查了一下发现,spring不允许使用两个 <context:property-placeholder>
- python2和python3同时存在如何安装和使用pip
linux下 如果没有pip则需要安装pip python2安装pip sudo apt install python-pip1如果是python3,则如下: sudo apt install pyt ...
- leetcode个人题解——#48 rotage image
思路:本题要求不能利用额外的二维数组实现旋转,所以重点在于弄清矩阵旋转的数学方法. 我的方法是,首先按照副对角线进行对称,然后按照水平中轴线进行对称即可. class Solution { publi ...
- hbase实战——(1.1 nosql介绍)
什么是nosql NoSQL(NoSQL = Not Only SQL),意思是不仅仅是SQL的扩展,一般指的是非关系型的数据库. 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0 ...
- Windows下使用WinRAR命令自动备份文件
最近有一个需求:为了防止数据丢失,每天对固定文件夹下的文件进行打包压缩备份. 解决办法:使用Windows的任务计划程序,每天执行一下压缩命令: Windows任务计划程序在这里就不再介绍了,网上有很 ...
- 20162328蔡文琛 week06 大二
20162328 2017-2018-1 <程序设计与数据结构>第6周学习总结 教材学习内容总结 队列元素按FIFO的方式处理----最先进入的元素最先离开. 队列是保存重复编码k值得一种 ...