Bzoj 4591: [Shoi2015]超能粒子炮·改 数论,Lucas定理,排列组合
4591: [Shoi2015]超能粒子炮·改
Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 178 Solved: 70
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
5 5
Sample Output
HINT
Source
题解:
Lucas定理:C(n,k)%p=(C(n/p,k/p)*C(n%p,k%p))%p (p为质数)
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define MOD 2333
LL jc[MOD+],C[MOD+][MOD+],S[MOD+][MOD+];
LL read()
{
LL s=,fh=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')fh=-;ch=getchar();}
while(ch>=''&&ch<=''){s=s*+(ch-'');ch=getchar();}
return s*fh;
}
LL mod(LL k,LL k1){return k-(k/k1)*k1;}
void cljc()
{
jc[]=1LL;
for(int i=;i<=MOD;i++)jc[i]=mod(jc[i-]*i,MOD);
}
void clC()
{
int i,j;
C[][]=1LL;
for(i=;i<=MOD;i++)
{
C[i][]=C[i][i]=1LL;
for(j=;j<i;j++)C[i][j]=mod(C[i-][j]+C[i-][j-],MOD);
}
for(i=;i<=MOD;i++)
{
S[i][]=1LL;
for(j=;j<=MOD;j++)S[i][j]=mod(S[i][j-]+C[i][j],MOD);
}
}
LL ksm(LL bb,LL pp,LL kk)
{
LL s=1LL;
while(pp>)
{
if(pp%!=)s=mod(s*bb,kk);
pp/=;
bb=mod(bb*bb,kk);
}
return s;
}
LL Comb(LL n,LL m,LL p)
{
if(m>n)return 0LL;
if(m>n-m)m=n-m;
return mod(jc[n]*ksm(mod(jc[m]*jc[n-m],p),p-,p),p);
}
LL Lucas(LL n,LL m,LL p)
{
if(m==0LL)return 1LL;
return mod(/*Comb(mod(n,p),mod(m,p),p)*/C[n%p][m%p]*Lucas(n/p,m/p,p),p);
}
LL getans(LL n,LL m,LL p)
{
if(m<0LL)return 0LL;
return mod(mod(S[mod(n,)][]*getans(n/,m/-,p),p)+mod(Lucas(n/,m/,p)*S[mod(n,)][mod(m,)],p),p);
}
int main()
{
LL T,n,k;
cljc();
clC();
T=read();
while(T--)
{
n=read();k=read();
printf("%lld\n",getans(n,k,MOD));
}
fclose(stdin);
fclose(stdout);
return ;
}
Bzoj 4591: [Shoi2015]超能粒子炮·改 数论,Lucas定理,排列组合的更多相关文章
- bzoj 4591: [Shoi2015]超能粒子炮·改 [lucas定理]
4591: [Shoi2015]超能粒子炮·改 题意:多组询问,求 \[ S(n, k) = \sum_{i=0}^n \binom{n}{i} \mod 2333,\ k \le n \le 10^ ...
- 【BZOJ4591】超能粒子炮·改(Lucas定理,组合计数)
题意: 曾经发明了脑洞治疗仪&超能粒子炮的发明家SHTSC又公开了他的新发明:超能粒子炮·改--一种可以发射威力更加 强大的粒子流的神秘装置.超能粒子炮·改相比超能粒子炮,在威力上有了本质的提 ...
- bzoj 4591 [Shoi2015]超能粒子炮·改——组合数前缀和
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4591 先说说自己的想法: 从组合意义的角度考虑,从n个里选<=k个,就添加k个空位置, ...
- luogu4345 [SHOI2015]超能粒子炮·改(组合数/Lucas定理)
link 输入\(n,k\),求\(\sum_{i=0}^k{n\choose i}\)对2333取模,10万组询问,n,k<=1e18 注意到一个2333这个数字很小并且还是质数这一良好性质, ...
- 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
[BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
- BZOJ4591 SHOI2015超能粒子炮·改(卢卡斯定理+数位dp)
注意到模数很小,容易想到使用卢卡斯定理,即变成一个2333进制数各位组合数的乘积.对于k的限制容易想到数位dp.可以预处理一发2333以内的组合数及组合数前缀和,然后设f[i][0/1]为前i位是否卡 ...
- P4345-[SHOI2015]超能粒子炮·改【Lucas定理,类欧】
正题 题目链接:https://www.luogu.com.cn/problem/P4345 题目大意 \(T\)组询问,给出\(n,k\)求 \[\sum_{i=0}^{k}\binom{n}{i} ...
- 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 95 Solved: 33[Submit][Statu ...
- 洛谷 P4345 [SHOI2015]超能粒子炮·改 解题报告
P4345 [SHOI2015]超能粒子炮·改 题意 求\(\sum_{i=0}^k\binom{n}{i}\),\(T\)组数据 范围 \(T\le 10^5,n,j\le 10^{18}\) 设\ ...
随机推荐
- js 全选 反选
1.全选 function selectAll(form){ for (var i = 0; i < form.elements.length; i++) { if (form.elements ...
- [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计
源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...
- [Ecmall]ECMALL目录结构设置与数据库表
最近在做ecmall的开发,ecmall在开源方面还有待进步啊,官方没有提供开发文档,也没有关于系统架构组织的贡献,使用者都要自己从0开始,官方论坛连二次开发板块都没有,都在哪瞎扯淡,广告一堆.可悲~ ...
- HDU 2992 Hotel booking(BFS+DFS 或者 SPFA+Floyd)
点我看题目 题意 : 一个司机要从1点到达n点,1点到n点中有一些点有宾馆,司机的最长开车时间不能超过10小时,所以要在10小时之内找到宾馆休息,但是为了尽快的走到n点,问最少可以经过几个宾馆. 思路 ...
- EASYUI Dialog的基本使用
1.基本使用 代码: <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server&q ...
- Android_Mars学习笔记_S01_001activity初步
一.activity初步 1.程序启动会先读配置文件AndroidManifest.xml找activity 2.activity会在onCreate方法中读取activity_main.xml文件, ...
- LCMS
LCMS(LearningContent Management System) 即学习内容管理系统
- eay ui iframe 下常问题
背景:客户要使用https进行登录,把原来的登录做到一个小框,用iframe嵌进来进行登录. 客户拥有4个域名,但只在xxx.com域名中购买了安全证书,所以多个域名下登录所用的iframe中src是 ...
- 深入理解jvm
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝 ...
- DSPLIB for C6455+CCSv3.3
问题描述: Hello everybody, I was looking for DSPLIB libraries optimized for C6455 processors. I found th ...