传送门

看到数据和模数大小就知道要上 lucas 了

然后开始愉快地推公式:

答案为 $\sum _{i=0}^kC_{n}^{i}\ (mod\ 2333)$

设 $f [ i ] [ j ] = \sum _{k=0}^jC_{i}^{k}\ (mod\ 2333)\ ,\ P=2333$

那么根据 lucas 定理得 $f[n][k]=\sum _{i=0}^k {C_{n\%P}^{i\%P}C_{n/P}^{i/p}}$

看到 $i/P$ 容易想到整除分块,那就把 $i/P$ 相同的块提出来看看

$=C_{n/P}^{0} \sum _{i=0}^{p-1}{C_{n\%P}^{i}}+C_{n/P}^{1} \sum _{i=0}^{p-1}{C_{n\%P}^{i}}+...+ C_{n/P}^{k/P}\sum _{i=0}^{k\%P}{C_{n\%P}^{i}}$

把$\sum _{i=0}^{p-1}{C_{n\%P}^{i}}$ 提出来,得到

$=\sum _{i=0}^{p-1}{C_{n\%P}^{i}}(C_{n/P}^{0}+C_{n/P}^{1}+...+C_{n/P}^{k/P-1})+ C_{n/P}^{k/P}\sum _{i=0}^{k\%P}{C_{n\%P}^{i}}$

那就可以写成 $=f[n\%P][P-1]\cdot f[n/P][k/P-1]+ C_{n/P}^{k/P}f[n\%P][k\%P]$

然后就可以递归下去求了

注意long long

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
typedef long long ll;
inline ll read()
{
ll x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int M=,mo=;
inline ll fk(ll x) { return x>=mo ? x-mo : x; }
int T;
ll N,K,f[M][M],C[M][M];
inline ll lucas(ll a,ll b)//lucas不解释
{
if(a<b) return ;
if(!b||a==b) return ;
return C[a%mo][b%mo]*lucas(a/mo,b/mo)%mo;
}
inline ll F(ll n,ll k)
{
if(k<) return ; if(!n||!k) return ;//边界
if(n<mo&&k<mo) return f[n][k];//边界
return fk( F(n/mo,k/mo-)*f[n%mo][mo-]%mo + lucas(n/mo,k/mo)*f[n%mo][k%mo]%mo );
}
void pre()//预处理,注意C和f范围不同
{
C[][]=f[][]=;
for(int i=;i<=mo;i++)
{
C[i][]=C[i][i]=f[i][]=;
for(int j=;j<i;j++) C[i][j]=fk(C[i-][j]+C[i-][j-]);
}
for(int i=;i<=mo;i++)
for(int j=;j<=mo;j++) f[i][j]=fk(f[i][j-]+C[i][j]);
}
int main()
{
pre();
scanf("%d",&T);
while(T--)
{
N=read(); K=read();
printf("%lld\n",F(N,K));
}
return ;
}

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. bzoj4591 / P4345 [SHOI2015]超能粒子炮·改

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

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

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

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

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

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

    题目大意:给你$n,k$,求:$$\sum\limits_{i=0}^k\binom n i\pmod{2333}$$题解:令$p=2333,f(n,k)\equiv\sum\limits_{i=0} ...

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

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

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

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

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

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

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

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

随机推荐

  1. VS调试程序时,程序出现异常,但VS不报错的解决方案

    在调试>异常> 里面把勾全勾上就行了!

  2. sklearn.svm.SVC参数说明

    摘自:https://blog.csdn.net/szlcw1/article/details/52336824 本身这个函数也是基于libsvm实现的,所以在参数设置上有很多相似的地方.(PS: l ...

  3. 【转】PEAR安装、管理及使用

    PEAR安装   linux下只要你安装的是PHP 4.3.0以上的版本,默认安装都是支持PEAR的,除非你使用了”--WITHOUT-PEAR”选项,修改PHP.INI文件,在INCLUDE_PAT ...

  4. jmeter CSV Data数据中带有逗号解决方法

    今天用jmeter做性能测试,由于参数的数据中含有逗号,一直失败,尝试了几次终于成功,先写下经验 首先看设置 E:\apache-jmeter-2.12\bin\litaojunzb.csv文件格式如 ...

  5. win10开机时不显示锁屏壁纸

    win10开机壁纸存放在此目录下: C:\Users\%username%\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManage ...

  6. Android之九宫格解锁的实现

        <ignore_js_op>                                                  下面是最重要的那个LocusPassWordView ...

  7. 抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程

    转自:http://www.51testing.com/html/80/n-3726980.html   抓包工具 Fiddler 使用:弱网络环境模拟限速测试流程 发表于:2018-6-06 11: ...

  8. Linux文件锁flock ,检测进程是否已经存在

    在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock.  头文件:#include<sys/fil ...

  9. 微信创建带参数二维码,并加上logo

    现在需要创建一个场景二维码,除了基础的微信接口创建外,需要加上小logo,思路如下: 1. 首先根据微信的开发文档创建二维码,获取二维码的url,没啥可说的,按照文档来就好了 获取到的二维码就是这么素 ...

  10. Web Server 在iis下部署asp网站在iis下

    Web Server 在iis下部署asp网站在iis下 一.参考地址: win7 http://jingyan.baidu.com/article/636f38bb1bbcadd6b846108b. ...