iii 发表于 2024-4-10 07:08:39

分为若干组使得组内平均数相等

将{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}分为若干组,使得每组的平均数均相等,有多少种分法?

ouukucakac 发表于 2024-4-10 07:08:58

众所周知
平均数只能是5.5
所以问题可以改成,有多少种分法使得平均数等于5.5

然后分两种情况
1、{1,10}{2,9}{3,8}{4,7}{5,6}这五个集合与每一组的交要不然是本身要不然是空集
2、其他情况

于是……
除去{1,10}{2,9}{3,8}{4,7}{5,6}这样的分组之后,剩下的分法,至多有4个组

4^10<2^32,这已经是计算机可以暴搜的范畴了#include<stdio.h>#define testmean(x) (count==0||(val<<1)/count==11)int main(){char q,w,e,r,t,y,u,i,o,p;char val,count;int right;val=val=val=val=count=count=count=count=right=right=right=right=0;for(q=0;q<1;q++){    val+=1;count+=1;for(w=0;w<4;w++){    val+=2;count+=1;for(e=0;e<4;e++){    val+=3;count+=1;for(r=0;r<4;r++){    val+=4;count+=1;for(t=0;t<4;t++){    val+=5;count+=1;for(y=0;y<4;y++){    val+=6;count+=1;for(u=0;u<4;u++){    val+=7;count+=1;for(i=0;i<4;i++){    val+=8;count+=1;for(o=0;o<4;o++){    val+=9;count+=1;for(p=0;p<4;p++){    val+=10;count+=1;    if(testmean(0)&&testmean(1)&&testmean(2)&&testmean(3)){      right[(0!=count)+(0!=count)+(0!=count)]++;    }    val-=10;count-=1;}    val-=9;count-=1;}    val-=8;count-=1;}    val-=7;count-=1;}    val-=6;count-=1;}    val-=5;count-=1;}    val-=4;count-=1;}    val-=3;count-=1;}    val-=2;count-=1;}    val-=1;count-=1;}return printf("%d %d %d %d %d",right,right,right,right,right+right+(right>>1)+right/6+1);}time ./math1 69 174 60 168real    0m0.024suser    0m0.016ssys   0m0.016s
如果没算错应该一共168种情况,分别对应
都属于第一组(1种)
属于两个组,1在1组(69种)
属于3个组,1在1组,交换2,3组视为不同的结果(174种)
属于4个组,1在1组,交换2,3,4组视为不同的结果(60种)
属于5个组,只能是{1,10}{2,9}{3,8}{4,7}{5,6}
去除重复(交换)之后共计168种

dingji 发表于 2024-4-10 07:09:31

本坛有过一个深入的讨论,但目前还没有最终结果。
自然数前段的均衡样本

eheotolee 发表于 2024-4-10 07:10:02

Needs["Combinatorica`"];Length],AllTrue==11/2&]]]Table,i],Equal@@Mean/@#&]],{i,5}]
https://bbs.emath.ac.cn/data/attachment/forum/201910/09/101811n0nm35mm6hdnwkp3.png

ozjazit 发表于 2024-4-10 07:10:07

@wayne
你接的是这个贴子:从1-33中,任取6个数,要求和为102,共有几种取法?
页: [1]
查看完整版本: 分为若干组使得组内平均数相等