题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4591

先说说自己的想法:

  从组合意义的角度考虑,从n个里选<=k个,就添加k个空位置,变成从n+k个里选k个。

  其实是错的。因为选空位置的方案数重复了。

于是https://blog.csdn.net/neither_nor/article/details/51684410

其实就是写出∑C的式子,把C用lucas定理表示,发现有一堆 i%mod 相等的东西;

把它们提出来,用乘法可以加速。就像每mod个一个循环节一样。

其实s也很好预处理,因为mod太小了。s也能递归。关键可能是想到可以用s表示。

注意一下k<0的判断。还有jc、ine、jcn(后期的ine)的开始点,还有c和s的不同范围。

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int mod=;
int T,ine[mod+],jc[mod+],c[mod+][mod+],s[mod+][mod+];
ll n,k;
void init()
{
ine[]=;
for(int i=;i<mod;i++)ine[i]=(mod-mod/i)*ine[mod%i]%mod;//won't use ine[0],or i doesn't have ine under %mod
ine[]=;
for(int i=;i<mod;i++)(ine[i]*=ine[i-])%=mod;
jc[]=;//from 0
for(int i=;i<mod;i++)jc[i]=jc[i-]*i%mod;
for(int i=;i<mod;i++)
for(int j=;j<mod;j++)//not j<=i!!
{
if(j<=i)c[i][j]=jc[i]*ine[j]%mod*ine[i-j]%mod;
s[i][j]=c[i][j];if(j)(s[i][j]+=s[i][j-])%=mod;
}
}
int lucas(ll n,ll m)
{
if(!m)return ;if(n<m)return ;if(n<mod&&m<mod)return c[n][m];
return lucas(n/mod,m/mod)*c[n%mod][m%mod]%mod;
}
int S(ll n,ll k)
{
if(k<)return ;if(!k)return ;//if k<0
if(n<mod&&k<mod)return s[n][k];
return (S(n/mod,k/mod-)*s[n%mod][mod-]%mod+lucas(n/mod,k/mod)*s[n%mod][k%mod])%mod;
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld",&n,&k);
printf("%d\n",S(n,k));
}
return ;
}

bzoj 4591 [Shoi2015]超能粒子炮·改——组合数前缀和的更多相关文章

  1. Bzoj 4591: [Shoi2015]超能粒子炮·改 数论,Lucas定理,排列组合

    4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 178  Solved: 70[Submit][Stat ...

  2. bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]

    4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...

  3. luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)

    link 输入\(n,k\),求\(\sum_{i=0}^k{n\choose i}\)对2333取模,10万组询问,n,k<=1e18 注意到一个2333这个数字很小并且还是质数这一良好性质, ...

  4. 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)

    [BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...

  5. 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告

    P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...

  6. bzoj4591 / P4345 [SHOI2015]超能粒子炮·改

    P4345 [SHOI2015]超能粒子炮·改 题意:求$\sum_{i=1}^{k}C(n,i)\%(P=2333)$ 肯定要先拆开,不然怎么做呢(大雾) 把$C(n,i)$用$lucas$分解一下 ...

  7. BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理

    BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理 Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以 ...

  8. Lucas(卢卡斯)定理模板&&例题解析([SHOI2015]超能粒子炮·改)

    Lucas定理 先上结论: 当p为素数: \(\binom{ N }{M} \equiv \binom{ N/p }{M/p}*\binom{ N mod p }{M mod p} (mod p)\) ...

  9. 【bzoj4591】[Shoi2015]超能粒子炮·改 Lucas定理

    题目描述 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提 ...

随机推荐

  1. uCOS-II的学习笔记(共九期)和例子(共六个)

    源:uCOS-II的学习笔记(共九期)和例子(共六个) 第一篇 :学习UCOS前的准备工作http://blog.sina.com.cn/s/blog_98ee3a930100w0eu.html 第二 ...

  2. INSPIRED启示录 读书笔记 - 第13章 产品原则

    确定什么最重要 产品原则是对团队信仰和价值观的总结,用来指导产品团队作出正确的决策和取舍.它体现了产品团队的目标和愿景,是产品战略的重要组成部分.从形式上看,它是一系列明确的.体现团队特色的产品价值准 ...

  3. 实现利用公钥私钥免密码登录Linux服务器

    原理 客户端生成公钥私钥,把公钥拷贝给linux服务器,用自己的私钥连接服务器.实现如下: 如果是两台Linux服用器A和B,A来实现免密码登录B A执行ssh-keygen -t rsa 就会在/r ...

  4. 在shell中使用sendmail发送邮件

    cat > sendmymail.sh #!/bin/bash/usr/sbin/sendmail -t <<EOFFrom: Mail testing <abc@gmail. ...

  5. LeetCode——Construct Binary Tree from Preorder and Inorder Traversal

    Question Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may as ...

  6. JavaWeb -- 邮件收发

    smtp协议: telnet smtp.qq.com 25 ehlo kevin auth login eGlhbmdqaWU1NUBxcS5jb20= a2V2aW5feGlhbmc1NQ== ma ...

  7. DB处理大量数据处理日志报错问题

     因为当插入.更新或删除大批量数据的时候,有时候会出现事务日志满的问题,所以解决步骤 1.连接到当前数据库 db2 connect to uppdb 2.查看数据库配置文件 db2 get db cf ...

  8. python定制

    1.简单定制   a.使用time模块的localtime方法获取时间 b.time.localtime返回struct_time的时间格式 c.表现你的类:__str__和__repr__ 注:当属 ...

  9. review06

    使用关键字interface来定义一个接口.接口的定义和类定义很相似,分为接口声明和接口体. 接口体中包含常量的声明(没有变量)和抽象方法两部分.接口中只有抽象方法,没有普通方法.而且接口体中所有的常 ...

  10. JAVA设计模式初探之组合模式

    先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构.组合模式使得用户对单个对象和组合对象的使用具有一致性.” 就拿剪发办卡的事情来分析一下吧. 首先,一张卡可以在总部,分店, ...