传送门:Here

一句话题意:给定$ t$次询问,每次读入$n,k,$求$ \sum_{i=0}^kC_n^k\ mod\ 2333$,

其中$ t \leq 100000$,$n,k \leq 10^{18},$

前置知识:普通卢卡斯定理 $ C_n^k= C_{n \% p}^{k \% p}*C_{n/p}^{k/p} \% p$

我们定义$ S(n,k)=\sum_{i=0}^kC_n^k \% p$

考虑每次询问将式子展开:

$ S(n,k)= \sum\limits_{i=0}^kC_{n/p}^{i/p}*C_{n \%p}^{i \%p}\ mod\ p $

$ =\sum\limits_{i=0}^{k/p-1}C_{n/p}^i* \sum\limits_{j=0}^{p-1}C_{n \%p}^j+ \sum\limits_{i=k/p*p}^kC_{n/p}^{k/p}*C_{n \%p}^{i \%p}$

$ =\sum\limits_{i=0}^{k/p-1}C_{n/p}^i* \sum\limits_{j=0}^{p-1}C_{n \%p}^j+ \sum\limits_{i=0}^{k \%p}C_{n \%p}^{i}*C_{n/p}^{k/p}$

则有$ S(n,k)=S(n/p,k/p)*S(n \%p,p-1)+S(n \%p,k \%p)*C(n/p,k/p) (mod\ p)$

我们可以预处理$ i,j \leq p的s[i][j]和c[i][j]$

那么对于该式子只要递归做第一项以及用卢卡斯求组合数取模的值即可

my code:

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rt register int
#define ll long long
#define p 2333
#define r read()
using namespace std;
ll read()
{
ll x = ; int ch = getchar();
while (ch < '' || ch > '') ch = getchar();
while (ch >= '' && ch <= '') x = x * + ch - '', ch = getchar(); return x;
}
void write(ll y)
{
if (y > ) write(y / );
putchar(y % + '');
}
int i,j,k,m,n,x,y,z;
int c[][],s[][];
int C(const ll x,const ll y)
{
return (x<p)?c[x][y]:C(x/p,y/p)*c[x%p][y%p]%p;
}
int S(const ll n,const ll k)
{
return (n<p)?s[n][k]:(s[n%p][p-]*S(n/p,k/p-)+C(n/p,k/p)*s[n%p][k%p])%p;
}
int main()
{
c[][]=s[][]=;
for(rt i=;i<=p;i++)s[][i]=;
for(rt i=;i<=p;i++)
{
for(rt j=;j<=i;j++)
c[i][j]=(c[i-][j]+c[i-][j-])%p,s[i][j]=(s[i][j-]+c[i][j])%p;
for(rt j=i+;j<=p;j++)s[i][j]=s[i][j-];
}
for(rt t=read();t;t--)
{
ll n=read(),k=read();
write(S(n,k)),putchar('\n');
}
return ;
}

因为最多只有log层所以单次复杂度为log次Lucas,能轻松通过此题

「SHOI2015」(LOJ2038)超能粒子炮・改的更多相关文章

  1. loj#2038. 「SHOI2015」超能粒子炮・改

    题目链接 loj#2038. 「SHOI2015」超能粒子炮・改 题解 卢卡斯定理 之后对于%p分类 剩下的是个子问题递归 n,k小于p的S可以预处理,C可以卢卡斯算 代码 #include<c ...

  2. 「SHOI2015」超能粒子炮・改

    「SHOI2015」超能粒子炮・改 给你\(T\)组询问,每组询问给定参数\(n,k\),计算\(\sum\limits_{i=0}^k\dbinom{n}{i}\). \(T\leq10^5,n,k ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  10. BZOJ 4591 【SHOI2015】 超能粒子炮·改

    题目链接:超能粒子炮·改 这道题的大体思路就是用\(lucas\)定理,然后合并同类项,就可以得到一个可以递归算的式子了. 我们用\(S(n,k)\)表示答案,\(p\)表示模数(\(2333\)是一 ...

随机推荐

  1. MVC过滤器处理Session过期

    一.自定义一个Action过滤器 public class CheckSession: ActionFilterAttribute { public override void OnActionExe ...

  2. C connect实现Timeout效果(Windows)

    int SocketClient::connectTimeOutForWin(SOCKET &connect_fd, const int &timeout, const sockadd ...

  3. 洛谷 P1879 玉米田(状压DP入门题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 相关变量解释: int M,N; int plant[maxn][maxn];/ ...

  4. 委托delegate

    委托delegate没有函数体.委托可以指向函数(要与指向的函数格式.类型相一致) namespace demo { public delegate double MyDelegate(double ...

  5. CodeForces11D 状压dp

    http://codeforces.com/problemset/problem/11/D 题意 给定一个简单图,输出其中的简单环的数目.简单环的含义是,不包含重复顶点.重复边的环. 1 <= ...

  6. Struts2_配置文件

    1.结果跳转方式 <struts> <constant name="struts.devMode" value="true"></ ...

  7. Bootstrap框架介绍

    Bootstrap框架介绍 一.Bootstarp环境部署 1>.什么是Bootstartp框架 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架.它 ...

  8. 7.桥接模式(Bridge Pattern)

    动机(Motivate):    在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化, ...

  9. Program License Agreement updated/The updated Apple Developer Program License Agreement needs to be reviewed.

    Apple APP添加新APP时提示The updated Apple Developer Program License Agreement needs to be reviewed. 解决办法 登 ...

  10. HDU - 3974 Assign the task (线段树区间修改+构建模型)

    https://cn.vjudge.net/problem/HDU-3974 题意 有一棵树,给一个结点分配任务时,其子树的所有结点都能接受到此任务.有两个操作,C x表示查询x结点此时任务编号,T ...