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

来源:互联网 发布:dat数据文件格式 编辑:程序博客网 时间:2024/04/29 23:40

小明有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

0 2
原创粉丝点击