8635 气球
2015-11-24 19:20
253 查看
8635 气球该题有题解时间限制:500MS 内存限制:1000K 提交次数:204 通过次数:58 题型: 编程题 语言: G++;GCC Description一天,OYY 从外面打完比赛回来,手上拿了很多个气球,颜色各不相同。他见到我,就说,你看,我拿了很多气球! 我膜拜死了!!然后他就问了我一个问题,如果把这里的气球分成若干份。有多少种分法呢? 由于我数学非常菜,顿时头晕了,因此希望大家能帮我解答这个问题(@_@)) 输入格式输入数据有2行 第1 行有两个数n,m,分别代表oyy 手上的气球个数和分的份数(n<=10,m<=5) 第2 行有m 个数,分别代表每一份的个数,保证总个数等于n 输出格式输出数据有1行,输出一个数代表不同分法的总数。 输入样例3 1 3 输出样例1 提示Sample Input2: 4 2 2 2 Sample Output2: 3 来源Ick2作者admin |
#include <stdio.h> #include <stdlib.h> int main() { int n,m,a[5],b[15]={0},i,j,x,top; scanf("%d%d",&n,&m); for(i=0;i<m;i++) {scanf("%d",&a[i]);b[a[i]]+=1;} /*for(i=0;i<m;i++) printf("%d ",a[i]); printf("\n");*/ int sum1=1; for(i=0;i<m;i++) { top=a[i]; for(j=0;j<top;j++) sum1=sum1*(n-j); n=n-a[i]; } for(i=0;i<m;i++) { top=a[i]; for(j=0;j<top;j++) sum1=sum1/(top-j); n=n-a[i]; } for(i=0;i<m;i++) { for(j=i+1;j<m;j++) { if(a[j]==a[i]) {a[j]=0; continue;} } } x=0; for(i=0;i<m;i++) { if(a[i]==0) { i++; continue; } else { a[x]=a[i]; x++; i++;} } /*for(i=0;i<x;i++) printf("%d ",a[i]); printf("\n");*/ int sum2=1; for(i=0;i<x;i++) { for(j=0;j<b[a[i]];j++) { sum2=sum2*(b[a[i]]-j); } } printf("%d",sum1/sum2); return 0; }
View Code
相关文章推荐
- redis cluster java client jedisCluster spring集成方法
- HDU1051Wooden Sticks
- javascript模块化编程二(AMD规范)
- python 装饰器
- 简单的单链表<实现单链表的增删查改逆序和寻找中间节点>
- IDEA在DEBUG模式下慢的问题
- Time to sail!
- 读《探索需求-设计前的质量》有感二
- 数据挖掘 之 关联规则求解算法Apriori的实现
- 原码, 反码, 补码 详解
- Laravel 5.1 超级大坑 CentOS 7 文件路径大小写敏感造成的Migrate异常
- HashMap与HashTable的区别、HashMap与HashSet的关系 t的关系
- javascript模块化编程一
- Activiti系列:带有serviceTask的或者定时启动任务的流程部署失败的原因分析
- 【学神-RHEL6.5】1-17 shell基础及if表达式
- I/O敏感指令
- python 从shell读取指定文件以及写入指定文件
- Android app优化策略
- Codeforces 505B __Mr. Kitayuta's Colorful Graph(floyd)
- 【Quartz】配置最简单的集群