博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #309 (Div. 2) C. Kyoya and Colored Balls
阅读量:5816 次
发布时间:2019-06-18

本文共 1883 字,大约阅读时间需要 6 分钟。

Kyoya Ootori has a bag with n colored balls that are colored with k different colors. The colors are labeled from 1 to k. Balls of the same color are indistinguishable. He draws balls from the bag one by one until the bag is empty. He noticed that he drew the last ball of color ibefore drawing the last ball of color i + 1 for all i from 1 to k - 1. Now he wonders how many different ways this can happen.

Input

The first line of input will have one integer k (1 ≤ k ≤ 1000) the number of colors.

Then, k lines will follow. The i-th line will contain ci, the number of balls of the i-th color (1 ≤ ci ≤ 1000).

The total number of balls doesn't exceed 1000.

Output

A single integer, the number of ways that Kyoya can draw the balls from the bag as described in the statement, modulo 1 000 000 007.

Sample test(s)
input
3221
output
3
input
41234
output
1680
Note

In the first sample, we have 2 balls of color 1, 2 balls of color 2, and 1 ball of color 3. The three ways for Kyoya are:

1 2 1 2 31 1 2 2 3

2 1 1 2 3

这道题让我学会了组合数的计算。由于直接用组合数公式会导致结果不准确。如C(100,50)这样,假设用乘一个数除一个数的方法,那么可能会导致不能整除而会发生误差。

思路:若前i种颜色的方法总数是f(i),那么第i+1种颜色的方法总数是f(i+1)=f(i)*C(sum(i+1)-1,a[i+1]-1),当中sum(i+1)是前i+1种颜色的个数总和。

#include
#include
#include
#include
#include
#include
using namespace std;#define ll __int64#define maxn 1000000007int a[1600];ll c[1050][1060];ll sum;int main(){ int n,m,i,j,sum1; for(i=1;i<=1000;i++)c[i][0]=1; for(i=1;i<=1000;i++){ for(j=1;j<=i;j++){ if(i==j)c[i][j]=1; else if(i>j) c[i][j]=(c[i-1][j]+c[i-1][j-1])%maxn; } } while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++){ scanf("%d",&a[i]); } sum1=a[1];sum=1; for(i=2;i<=n;i++){ sum1+=a[i]; //printf("%d %d\n",a[i]-1,sum1-1); sum=(sum*c[sum1-1][a[i]-1])%maxn; //sum=(sum*f(a[i]-1,sum1-1))%maxn; //printf("%lld\n",sum); } printf("%I64d\n",sum); } return 0;}

转载地址:http://gambx.baihongyu.com/

你可能感兴趣的文章
七大关键数据 移动安全迎来历史转折点
查看>>
盘点物联网网关现有联网技术及应用场景
查看>>
mui 总结2--新建第一个app项目
查看>>
nginx的lua api
查看>>
考研太苦逼没坚持下来!看苑老师视频有点上头
查看>>
HCNA——RIP的路由汇总
查看>>
zabbix监控php状态(四)
查看>>
定时任务的创建
查看>>
实战Django:小型CMS Part2
查看>>
原创]windows server 2012 AD架构试验系列 – 16更改DC计算机名
查看>>
统治世界的十大算法
查看>>
linux svn安装和配置
查看>>
SSH中调用另一action的方法(chain,redirect)
查看>>
数据库基础
查看>>
表格排序
查看>>
关于Android四大组件的学习总结
查看>>
java只能的round,ceil,floor方法的使用
查看>>
由于无法创建应用程序域,因此未能执行请求。错误: 0x80070002 系统找不到指定的文件...
查看>>
新开的博客,为自己祝贺一下
查看>>
puppet任务计划
查看>>