【LG2183】[国家集训队]礼物
【LG2183】[国家集训队]礼物
题面
题解
插曲:不知道为什么,一看到这个题目,我就想到了这个人。。。
如果不是有\(exLucas\),这题就是\(sb\)题。。。
首先,若\(\sum_{i=1}^mw_i>n\)就直接\(Impossible\)了
然后我们考虑怎么求方案,其实很简单啊。。。
就是
\]
因为模数小,要用\(exLucas\)
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef long long ll;
ll exgcd(ll a, ll b, ll &x, ll &y) {
if (!b) return x = 1, y = 0, a;
ll res = exgcd(b, a % b, x, y), t;
t = x, x = y, y = t - a / b * y;
return res;
}
ll fpow(ll x, ll y, ll Mod) {
ll res = 1;
while (y) {
if (y & 1ll) res = res * x % Mod;
x = x * x % Mod;
y >>= 1ll;
}
return res;
}
ll fac(ll n, ll pi, ll pk) {
if (!n) return 1;
ll res = 1;
for (ll i = 2; i <= pk; i++)
if (i % pi) res = res * i % pk;
res = fpow(res, n / pk, pk);
for (ll i = 2; i <= n % pk; i++)
if (i % pi) res = res * i % pk;
return res * fac(n / pi, pi, pk) % pk;
}
ll inv(ll n, ll Mod) {
ll x, y;
exgcd(n, Mod, x, y);
return (x + Mod) % Mod;
}
ll CRT(ll b, ll p, ll Mod) { return b * inv(p / Mod, Mod) % p * (p / Mod) % p; }
ll C(ll n, ll m, ll pi, ll pk) {
ll fz = fac(n, pi, pk), fm1 = fac(m, pi, pk), fm2 = fac(n - m, pi, pk);
ll k = 0;
for (ll i = n; i; i /= pi) k += i / pi;
for (ll i = m; i; i /= pi) k -= i / pi;
for (ll i = n - m; i; i /= pi) k -= i / pi;
return fz * inv(fm1, pk) % pk * inv(fm2, pk) % pk * fpow(pi, k, pk) % pk;
}
ll exlucas(ll n, ll m, ll Mod) {
ll res = 0, tmp = Mod;
for (int i = 2; 1ll * i * i <= Mod; i++)
if (tmp % i == 0) {
ll pk = 1; while (tmp % i == 0) pk *= i, tmp /= i;
res = (res + CRT(C(n, m, i, pk), Mod, pk)) % Mod;
}
if (tmp > 1) res = (res + CRT(C(n, m, tmp, tmp), Mod, tmp)) % Mod;
return res;
}
ll N, M, Mod;
ll sum, w[10];
int main () {
cin >> Mod >> N >> M;
for (int i = 1; i <= M; i++) cin >> w[i], sum += w[i];
if (N < sum) return puts("Impossible") & 0;
ll ans = 1;
for (int i = 1; i <= M; i++) {
ans = ans * exlucas(N, w[i], Mod) % Mod;
N -= w[i];
}
printf("%lld\n", ans);
return 0;
}
【LG2183】[国家集训队]礼物的更多相关文章
- 【题解】国家集训队礼物(Lucas定理)
[国家集训队]礼物(扩展Lucas定理) 传送门可以直接戳标题 172.40.23.20 24 .1 答案就是一个式子: \[ {n\choose \Sigma_{i=1}^m w}\times\pr ...
- 洛谷 P2183 [国家集训队]礼物
题目描述 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物 ...
- luogu P2183 [国家集训队]礼物
LINK:礼物 n个物品 m个人 每个人要分得wi 个物品 每个物品互异 分给每个人的物品不分顺序 求方案数. \(n,p\leq 1e9 m\leq 5\) 方案数 那显然是 第一个人拿了w1件物品 ...
- Luogu P2183 [国家集训队]礼物 扩展卢卡斯+组合数
好吧学长说是板子...学了之后才发现就是板子qwq 题意:求$ C_n^{w_1}*C_{n-w_1}^{w_2}*C_{n-w_1-w_2}^{w_3}*...\space mod \space P ...
- P2183 [国家集训队]【一本通提高组合数学】礼物
[国家集训队]礼物 题目背景 一年一度的圣诞节快要来到了.每年的圣诞节小 E 都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小 E 心目中的重要性不同,在小 E 心中分量越重的人,收到的礼物会 ...
- BZOJ 2039: [2009国家集训队]employ人员雇佣
2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1369 Solved: 667[Submit ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7676 Solved: 3509[Subm ...
- [转] ACM中国国家集训队论文集目录(1999-2009)
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...
随机推荐
- 从 Swift 中的序列到类型擦除
如果有这样的一个需求,我希望能像数组一样,用 for 循环遍历一个类或结构体中的所有属性.就像下面这样: let persion = Persion() for i in persion { prin ...
- P2564 [SCOI2009]生日礼物
题目背景 四川2009NOI省选 题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可 ...
- Kali-linux使用Wifite破解无线网络
一些破解无线网络程序是使用Aircrack-ng工具集,并添加了一个图形界面或使用文本菜单的形式来破解无线网络.这使得用户使用它们更容易,而且不需要记住任何命令.本节将介绍使用命令行工具Wifite, ...
- PAT——1056. 组合数的和
给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入 ...
- HDFS的Read过程分析
在hadoop中作为后端存储的文件系统HDFS发挥中重要的作用,HDFS是一个分布式文件系统,按照Google File System的思想开发的,针对的场景是低端服务器.写操作少而读操作多的情况.在 ...
- wordpress安装(ubuntu+nginx+php+mariadb)
一. 环境 ubuntu12.04.4 nginx 1.6.0 mariadb 10.0 更新系统补丁 sudo apt-get update sudo apt-get dist-upgrade ...
- CoreAnimation|动画
IOS开发UI篇--IOS动画(Core Animation)总结 - CSDN博客 iOS动画,绝对够分量! - 简书 iOS动画篇:UIView动画 - 简书 iOS动画开发之五--炫酷的粒子效果 ...
- Token ,Cookie和Session的区别
在做接口测试时,经常会碰到请求参数为token的类型,但是可能大部分测试人员对token,cookie,session的区别还是一知半解. Cookie cookie 是一个非常具体的东西,指的就是浏 ...
- 【MySQL】基本语句
##mac启动mysql的命令语句## /usr/local/mysql/bin/mysql -u root -p ##然后输入密码 查看当前存在数据库 show databases; 创建数据库 c ...
- 同步工具类-----循环栅栏:CyclicBarrier
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; impor ...