传送门: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. Django(十一)请求生命周期之CBV与FBV

    https://www.cnblogs.com/yuanchenqi/articles/8715364.html FBV FBV(function base views) 就是在视图里使用函数处理请求 ...

  2. JMeter请求执行次数 你想执行几次就执行几次

    今天介绍下JMeter如何控制请求执行次数 主要有两种方式: 方式一:通过循环控制器控制每个请求的执行次数 例如:脚本执行规律是这样的,login-->customerPage-->sea ...

  3. Codeforces Round #524 (Div. 2) C. Masha and two friends(思维+计算几何?)

    传送门 https://www.cnblogs.com/violet-acmer/p/10146350.html 题意: 有一块 n*m 的棋盘,初始,黑白块相间排列,且左下角为白块. 给出两个区间[ ...

  4. python 学习笔记:python例子

    廖雪峰python网站 #if els # -*- coding: utf-8 -*- #list是一种有序的集合,可以随时添加和删除其中的元素. ''' classmates=['a','b','c ...

  5. 转:在Struts 2中实现文件上传

    (本文转自:http://www.blogjava.net/max/archive/2007/03/21/105124.html) 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题 ...

  6. Unity 后处理堆

    Unity安装后处理的过程:windows---PacageManager---Post Processing Post Processing后处理堆需要知道要修改那个相机渲染的内容,先定位到相机,再 ...

  7. Js封装的动画函数实现轮播图

    ---恢复内容开始--- 效果图说明:当鼠标移到哪一个按钮上的时候会自动跳转到某一张图片上,并且按钮会以高亮显示 项目目录结构 用到的js封装的animate()动画         function ...

  8. bzoj1003 最短路+dp

    遇到小范围数据的题目就容易被限制了思维,我单知道数据小可以跑很多遍最短路,但我没想到暴力跑N ^ 2的最短路也能过 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输 ...

  9. 1053. Path of Equal Weight (30)

    Given a non-empty tree with root R, and with weight Wi assigned to each tree node Ti. The weight of ...

  10. 在Ajax返回多个值

    <html> <head> <title>AjaxTest</title> <script type="text/javascript& ...