好吧学长说是板子。。。学了之后才发现就是板子qwq


题意:求$ C_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}*...\space mod \space P$

当然,如果$\Sigma w_i >n$,则无解。

不会扩展卢卡斯?

#include<cstdio>
#include<iostream>
#define ll long long
#define R register ll
using namespace std;
inline ll g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
inline ll qpow(ll a,ll b,ll p) { R ret=; a%=p;
for(;b;b>>=,(a*=a)%=p) if(b&) (ret*=a)%=p; return ret;
}
inline void exgcd(ll a,ll b,ll& x,ll& y) {
if(!b) {x=,y=; return ;}
exgcd(b,a%b,y,x),y-=a/b*x;
}
inline ll Inv(ll n,ll p) {
R x,y; exgcd(n,p,x,y); return (x%p+p)%p;
}
ll n,m,p,w[];
inline ll fac(int n,int pi,int pk) {
if(!n) return ; R ans=;
for(R i=;i<pk;++i) if(i%pi) ans=ans*i%pk;//循环节
ans=qpow(ans,n/pk,pk); //快速幂,即循环节的个数
for(R i=;i<=n%pk;++i) if(i%pi) ans=ans*i%pk;//处理最后的散块
return ans*fac(n/pi,pi,pk)%pk; //递归求解
}
inline ll L(int n,int m,int pi,int pk) {
R ind=; for(R i=n;i;i/=pi) ind+=i/pi;
for(R i=m;i;i/=pi) ind-=i/pi;
for(R i=n-m;i;i/=pi) ind-=i/pi;
R N=fac(n,pi,pk),M=fac(m,pi,pk),N_M=fac(n-m,pi,pk);
return N*Inv(M,pk)%pk*Inv(N_M,pk)%pk*qpow(pi,ind,pk)%pk;
}
inline ll solve(int n,int m) { R tmp=p,ans=;
for(R i=;i*i<=tmp;++i) if(tmp%i==) {
R pk=; while(tmp%i==) pk*=i,tmp/=i;
ans=(ans+L(n,m,i,pk)*Inv(p/pk,pk)%p*p/pk%p)%p;
} if(tmp>) ans=(ans+L(n,m,tmp,tmp)*Inv(p/tmp,tmp)%p*p/tmp%p)%p;
return ans;
}
signed main() {
p=g(),n=g(),m=g(); R sum=;
for(R i=;i<=m;++i) sum+=(w[i]=g());
if(sum>n) {printf("Impossible\n"); return ;}
R ans=; for(R i=;i<=m;++i) ans=ans*solve(n,w[i])%p,n-=w[i];
printf("%lld\n",ans);
}

2019.05.18

Luogu P2183 [国家集训队]礼物 扩展卢卡斯+组合数的更多相关文章

  1. luogu P2183 [国家集训队]礼物

    LINK:礼物 n个物品 m个人 每个人要分得wi 个物品 每个物品互异 分给每个人的物品不分顺序 求方案数. \(n,p\leq 1e9 m\leq 5\) 方案数 那显然是 第一个人拿了w1件物品 ...

  2. 洛谷 P2183 [国家集训队]礼物

    题目描述 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物 ...

  3. 【题解】国家集训队礼物(Lucas定理)

    [国家集训队]礼物(扩展Lucas定理) 传送门可以直接戳标题 172.40.23.20 24 .1 答案就是一个式子: \[ {n\choose \Sigma_{i=1}^m w}\times\pr ...

  4. P2183 [国家集训队]【一本通提高组合数学】礼物

    [国家集训队]礼物 题目背景 一年一度的圣诞节快要来到了.每年的圣诞节小 E 都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小 E 心目中的重要性不同,在小 E 心中分量越重的人,收到的礼物会 ...

  5. luogu P2757 [国家集训队]等差子序列

    题目链接 luogu P2757 [国家集训队]等差子序列 题解 线段树好题 我选择暴力 代码 // luogu-judger-enable-o2 #include<cstdio> inl ...

  6. 【LG2183】[国家集训队]礼物

    [LG2183][国家集训队]礼物 题面 洛谷 题解 插曲:不知道为什么,一看到这个题目,我就想到了这个人... 如果不是有\(exLucas\),这题就是\(sb\)题... 首先,若\(\sum_ ...

  7. luogu P2619 [国家集训队2]Tree I

    题目链接 luogu P2619 [国家集训队2]Tree I 题解 普通思路就不说了二分增量,生成树check 说一下坑点 二分时,若黑白边权有相同,因为权值相同优先选白边,若在最有增量时出现黑白等 ...

  8. [Luogu P1829] [国家集训队]Crash的数字表格 / JZPTAB (莫比乌斯反演)

    题面 传送门:洛咕 Solution 调到自闭,我好菜啊 为了方便讨论,以下式子\(m>=n\) 为了方便书写,以下式子中的除号均为向下取整 我们来颓柿子吧qwq 显然,题目让我们求: \(\l ...

  9. BZOJ2142礼物——扩展卢卡斯

    题目描述 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼 ...

随机推荐

  1. loj515贪心只能过样例

    bitset练习题... 位运算真的是玄学... 一开始真的“只能过样例” 后来发现把左移写成了小于号 鬼知道我在想什么/手动微笑 loj第一题 #include<iostream> #i ...

  2. 【原创】C++实现获取本机机器名及外网IP代码

    上代码: #include "stdafx.h" #include <WINSOCK2.H> #include <urlmon.h> #pragma com ...

  3. Gym - 101196:F Removal Game(区间DP)

    题意:一个环状数组,给定可以删去一个数,代价的相邻两个数的gcd,求最小代价. 思路:区间DP即可,dp[i][j]表示[i,j]区间只剩下i和j时的最小代价,那么dp[i][j]=min  dp[i ...

  4. LOJ2305 「NOI2017」游戏

    「NOI2017」游戏 题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行$n$场 ...

  5. 查看,检查,修复pg的命令

    标签(空格分隔): ceph,ceph运维,pg 如果集群状态是HEALTH_ERR 并且有pgs inconsistent,需要进行如下操作: 1. 通过下面的命令查看哪些pg状态不一致: # ce ...

  6. ng2-升级脚手架到最新版本

    //先卸载,后安装 npm uninstall -g @angular/cli npm cache clean npm install -g @angular/cli@latest

  7. js中一些小知识点总结--持续更新

    以下知识点来自于编写高质量代码-改善JavaScript程序的188个建议,只用于自我知识的补充. 一.NaN 1.NaN是一个特殊的数量值,不表示一个数字,尽管下面的代码仍然是返回类型为number ...

  8. 开启struts2自带的开发模式常量

    在以前的开发中,当修改一些配置时总是不能及时地更新到服务器,我们总会重新部署或重启来更新改变的内容,在struts2中可以通过一个常量来达到此目的.即在struts.xml中的<struts&g ...

  9. 【Java】Java程序员面试宝典(第三版)第5章----Java程序设计基本概念

    1.static静态变量,在次级作用域也可以被修改. 2.k++ + k++.第一个自加实际上只有在与计算+k++时补增.详情P36的题目. 3.Java数据类型从低到高分为(byte short c ...

  10. Java进阶之美文共享

    2.在Java中如何避免"!=null"式的判空语句?  3.Java问答:终极父类(3)  Java问答:终极父类(下) Java问答:终极父类(上) 内存不足:杀死进程还是牺牲 ...