【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}\) 设\ ...
随机推荐
- youtube视频下载和搬运的方法
youtube全球最大的视频网站, 全世界每天有三分之一的网民在youtube上观看视频, 可是大部分人不知道, 在这些网民有一小部分人是依靠youtube生存的, 他们上传视频到youtube, y ...
- Python如何判断变量的类型
Python判断变量的类型有两种方法:type() 和 isinstance() 如何使用 对于基本的数据类型两个的效果都一样 type() ip_port = ['219.135.164.245', ...
- python数据可视化——matplotlib 用户手册入门:使用指南
参考matplotlib官方指南: https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introd ...
- 在Office 365 的如何给管理员赋予查看所有人邮箱的权限的Powershell
连接至Office365 的Powershell Get-MsolUser -UserPrincipalName admin@***.partner.onmschina.cn //Get-MsolUs ...
- 希尔排序(java实现)
上篇blog中介绍的直接插入排序,希尔排序就是对直接插入排序的一个优化.比如有这么一种情况:对一个无序数组进行从小到大的排序,但是数组的最后一个位置的数是最小的,我们要把它挪到第一个位置,其他位置的都 ...
- 第一次c++团队合作作业期间第一篇随笔
分析了自己分到的任务,我的理解是这样的:首先要生成程序主框架,在主框架中进行地图的描绘.我应该是先进行地图的拼接,把建筑物和地面都拼接好.然后再在地图上显示出英雄和小兵.同时还要在主框架中分析了自己分 ...
- Access连接数据源配置(新手必知)
今天要连接Access时发现win7 64位旗舰版控制面板中管理工具下的数据源(ODBC)配置竟然只有SQLServer的驱动,其他的都没有了,这可不好玩!上网百度了一番,有人也遇过这样的问题,我在此 ...
- Java String简单知识点总结
1.字符串的比较 public void run(){ //str1在池中 String str1 = new String("String"); //str2,str3 存在于堆 ...
- UML之Enterprise Architect使用
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:UML之Enterprise Architect使用 本文地址:http://tech ...
- [cnbeta]微软最强数据中心级操作系统
微软近日发表了一篇介绍Windows系统内核的博文,期间为了展示Windows的强大扩展性,放出了一张非常震撼的Windows任务管理器截图:乍一看似乎没啥特别的,几十甚至上百个逻辑核心的系统并不罕见 ...