[洛谷P4345][SHOI2015]超能粒子炮·改
题目大意:给你$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]超能粒子炮·改的更多相关文章
- 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告
P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...
- loj 2038 / 洛谷 P4345 [SHOI2015] 超能粒子炮・改 题解
好玩的推式子 题目描述 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒子炮・改相比超能粒子炮,在威力上 ...
- bzoj4591 / P4345 [SHOI2015]超能粒子炮·改
P4345 [SHOI2015]超能粒子炮·改 题意:求$\sum_{i=1}^{k}C(n,i)\%(P=2333)$ 肯定要先拆开,不然怎么做呢(大雾) 把$C(n,i)$用$lucas$分解一下 ...
- P4345 [SHOI2015]超能粒子炮·改 Lucas
\(\color{#0066ff}{ 题目描述 }\) 曾经发明了脑洞治疗仪与超能粒子炮的发明家 SHTSC 又公开了他的新发明:超能粒子炮・改--一种可以发射威力更加强大的粒子流的神秘装置. 超能粒 ...
- P4345 [SHOI2015]超能粒子炮·改
传送门 看到数据和模数大小就知道要上 lucas 了 然后开始愉快地推公式: 答案为 $\sum _{i=0}^kC_{n}^{i}\ (mod\ 2333)$ 设 $f [ i ] [ j ] = ...
- 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
[BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
- 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^ ...
- BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理
BZOJ_4591_[Shoi2015]超能粒子炮·改_Lucas定理 Description 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以 ...
随机推荐
- 3680: 吊打XXX
3680: 吊打XXX 链接 思路: 模拟退火. 代码: 跑的特别慢... #include<cstdio> #include<algorithm> #include<c ...
- Qt PC 安卓 tcp传输文件
废话不多说,如题,上代码 qt PC端 头文件 //网络部分 #include <QTcpSocket> #include <QFile> #include <QFile ...
- TPO-15 C2 Performance on a biology exam
TPO-15 C2 Performance on a biology exam 第 1 段 1.Listen to part of a conversation between a Student a ...
- 学好三角学(函数) — SWIFT和JAVASCRIPT游戏开发的必备技能 iFIERO.com
不论是使用哪种平台进行开发,三角学在游戏当中都被广泛的使用,因此,小编iFERO认为,三角学是必须得掌握的技能之一. 游戏图片由 摘自 Razeware LLC 先以Javascript为例 一.角度 ...
- leetcode-回文链表
请判断一个链表是否为回文链表. 示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶:你能否用 O(n) 时间复杂 ...
- (一)Spring Boot修改内置Tomcat端口号--解决tomcat端口被占用的问题
Spring Boot 内置Tomcat默认端口号为8080,在开发多个应用调试时很不方便,本文介绍了修改 Spring Boot内置Tomcat端口号的方法. 一.EmbeddedServletCo ...
- IMPI Python集群运行报错:
Intel MPI环境利用hostfile多主机运行下报错 HYDU_process_mfile_token (../../utils/args/args.c:523): token slots no ...
- 关于TensorFlow的GPU设置
摘自:https://blog.csdn.net/byron123456sfsfsfa/article/details/79811286 1. 在使用GPU版的TensorFlow跑程序的时候,如果 ...
- TensorFlow | ReluGrad input is not finite. Tensor had NaN values
问题的出现 Question 这个问题是我基于TensorFlow使用CNN训练MNIST数据集的时候遇到的.关键的相关代码是以下这部分: cross_entropy = -tf.reduce_sum ...
- 从SDN鼻祖Nicira到VMware NSX 网络虚拟化平台的简单探讨
以前的大二层技术,一般是在物理网络底层使用IS-IS路由技术,再在此基础之上,实现数据中心网络的二层扩展,如公有的Trill.SPB技术和Cisco私有的OTV.Fabricpath技术:前沿一些的网 ...