题目大意:给你$n,k$,求:
$$
\sum\limits_{i=0}^k\binom n i\pmod{2333}
$$
题解:令$p=2333,f(n,k)\equiv\sum\limits_{i=0}^k\binom n i\pmod p$
$$
\begin{align*}
f(n,k)\equiv&\sum\limits_{i=0}^k\binom n i\pmod p\\    \equiv&\sum\limits_{i=0}^k\binom{\big\lfloor\frac np\big\rfloor}{\big\lfloor\frac ip\big\rfloor}\binom{n\bmod p}{i\bmod p}\pmod p\\
\end{align*}\\
令s=\left\lfloor\dfrac k p\right\rfloor
$$

$$
\begin{align*}
f(n,k)\equiv&[\sum\limits_{i=0}^{p-1}\binom{n\bmod p}{i}][\sum\limits_{i=0}^{s-1}\binom{\big\lfloor\frac n p\big\rfloor}{i}]\\
    &+\binom{\left\lfloor\frac np\right\rfloor}{s}\sum\limits_{i=sp}^k\binom{n\bmod p}{i\bmod p}\pmod p\\
    \equiv&[\sum\limits_{i=0}^{p-1}\binom{n\bmod p}{i}][\sum\limits_{i=0}^{s-1}\binom{\big\lfloor\frac n p\big\rfloor}{i}]\\
    &+\binom{\left\lfloor\frac np\right\rfloor}{s}\sum\limits_{i=0}^{k\bmod p}\binom{n\bmod p}{i}\pmod p\\
    \equiv&f(n\bmod p, p-1)f(\left\lfloor\dfrac np\right\rfloor,s-1)\\
    &+\binom{\big\lfloor\frac np\big\rfloor}{s}f(n\bmod p,k\bmod p)\pmod p\\
\end{align*}
$$

卡点:未注意$n,k\leqslant10^{18}$

C++ Code:

#include <cstdio>
const int mod = 2333;
#define maxn mod
inline void reduce(int &x) { x += x >> 31 & mod; } int Tim;
long long n, k;
int com[maxn][maxn], pre[maxn][maxn]; int C(long long a, long long b) {
if (a < b) return 0;
if (a < mod) return com[a][b];
return com[a % mod][b % mod] * C(a / mod, b / mod) % mod;
}
int solve(long long n, long long k) {
if (k < 0) return 0;
if (n < mod && k < mod) return pre[n][k];
const long long s = k / mod;
return (pre[n % mod][mod - 1] * solve(n / mod, s - 1) + pre[n % mod][k % mod] * C(n / mod, s)) % mod;
}
int main() {
scanf("%d", &Tim);
for (int i = 0; i < mod; ++i) {
*com[i] = *pre[i] = 1;
for (int j = 1; j <= i; ++j) {
reduce(com[i][j] = com[i - 1][j] + com[i - 1][j - 1] - mod);
reduce(pre[i][j] = pre[i][j - 1] + com[i][j] - mod);
}
for (int j = i + 1; j < mod; ++j) reduce(pre[i][j] = pre[i][j - 1] + com[i][j] - mod);
}
while (Tim --> 0) {
scanf("%lld%lld", &n, &k);
printf("%d\n", solve(n, k));
}
return 0;
}

[洛谷P4345][SHOI2015]超能粒子炮·改的更多相关文章

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

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

  2. loj 2038 / 洛谷 P4345 [SHOI2015] 超能粒子炮・改 题解

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

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

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

  4. P4345 [SHOI2015]超能粒子炮·改 Lucas

    \(\color{#0066ff}{ 题目描述 }\) 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒 ...

  5. P4345 [SHOI2015]超能粒子炮·改

    传送门 看到数据和模数大小就知道要上 lucas 了 然后开始愉快地推公式: 答案为 $\sum _{i=0}^kC_{n}^{i}\ (mod\ 2333)$ 设 $f [ i ] [ j ] = ...

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

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

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

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

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

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

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

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

随机推荐

  1. 使用union

    QUERY: explain extended ) TRACE: { "steps": [ { "join_preparation": { "sele ...

  2. postman使用感言

    这段时间接口测试一直使用的postman,一款谷歌接口测试插件,感受如下 优点: 1.对于中小型公司来说应该是够用的,特别是一键接口环境切换,一键设置header,作为一般的接口测试来说已经很不错了, ...

  3. linux下的java开发环境

    一.jdk的安装 1.复制jdk至安装目录,我们指定的安装目录是:/usr/local/java .可是系统安装后在/usr/local下并没有java目录,这需要我们去创建一个java文件夹,如图

  4. 【WXS数据类型】Number

    Number包括整数与小数. 属性: 名称 返回 说明 [Number].constructor 值为字符串“Number” 返回该类型的结构字符串 方法: 原型:[Number].toString( ...

  5. opencv-学习笔记(5)形态学转变

    opencv-学习笔记(4)形态学转变 本章讲了几种形态学操作 腐蚀erode 膨胀dilate 开运算MORPH_OPEN 闭运算MORPH_CLOSE 形态学梯度MORPH_GRADIENT 礼帽 ...

  6. nginx配置和网站的部署

    环境: CentOS Linux release 7.3.1611 (Core) nginx version: nginx/1.13.4 PHP 5.4.16 (cli) (built: Nov 6 ...

  7. 如何做好FAE工作及FAE职位发展

    此文较长,是作者对于半导体FAE职业的一些总结,码字不容易,耐心的阅读,欢迎点赞. 曾经认识一位做电源研发的工程师,转行在一家代理商做FAE,做了一年半以后,就提出了离职请求,他老板问他是什么原因,他 ...

  8. Bacon's Cipher(培根密码)

    Description Bacon's cipher or the Baconian cipher is a method of steganography (a method of hiding a ...

  9. Notes of the scrum meeting(12.10)

    meeting time:20:00~20:30p.m.,December 10th,2013 meeting place:20号公寓前 attendees: 顾育豪                  ...

  10. 由作业题引发对C++引用的一些思考

    首先分析一段代码: #include <bits/c++config.h> #include <ostream> #include <iostream> #incl ...