您的位置:首页 > 编程语言 > C语言/C++

第六届蓝桥杯A组C/C++ 第七题 手链样式

2015-04-13 17:35 260 查看
小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙。

他想用它们串成一圈作为手链,送给女朋友。

现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢?

请你提交该整数。不要填写任何多余的内容或说明性的文字。

简单的排列组合,我在前两场的比赛中都出了排列组合的题(数三角形),有心的童鞋应该好好看看组合数学。这道题的思路是如果把所有的玛瑙看做不同的话应该用(3+4+5)!种,再除掉重复的需要除以3!4!5!(想想为啥)。在考虑到环形,可以先固定第一颗,答案是(3+4+5-1)!/(2!+4!+5!)+(3+4+5-1)!/(3!+3!+5!)+(3+4+5-1)!/(3!+4!+4!)

#include <cstdio>

int juchen(int a) {
int b = 1;
for(int i = 1; i<=a; i++) {
b *= i;
}
return b;
}
int main () {
int zi = juchen(3+4+5-1);
int a = juchen(2)*juchen(4)*juchen(5);
int b = juchen(3)*juchen(3)*juchen(5);
int c = juchen(3)*juchen(4)*juchen(3);
printf("%d\n",zi/a+zi/b+zi/c);
return 0;
}


答案是62370
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: