1 条题解
-
0
自动搬运
来自洛谷,原作者为

guobaipeng0
**搬运于
2025-08-24 21:24:10,当前版本为作者最后更新于2017-05-28 09:52:32,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
C++简短题解,蒟蒻看不懂楼下高深算法,由此我想到了用二维数组杨辉三角求组合数,a[i][j]=a[i-1][j-1]+a[i-1][j]这样就不会像楼下所说枚举超时。要注意求杨辉三角时取模10007,以及求方案数时取模10007,接着扑克牌数量要减去第i个人拿的牌。
注:其实数据很大,10000*10000的数组根本装不下,所以有点坑数据的成分,因为猜测m<=100,所以二维数组后面改成10000*100
#include<bits/stdc++.h> using namespace std; long long n,m,i,j,s=1,t,a[10005][105]; int main() { cin>>n>>m; a[0][0]=1; for (i=1; i<=10000; i++) for (j=0; j<=100; j++) a[i][j]=(a[i-1][j-1]+a[i-1][j])%10007; //杨辉三角求组合数 for (i=1; i<=m; i++) { cin>>t; s=s*a[n][t]%10007; //记得取模 n-=t; //由于第i个人拿了t张,扑克牌数量减少t } cout<<s; return 0; }
- 1
信息
- ID
- 356
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者