找回密码
 欢迎注册
查看: 8237|回复: 9

[讨论] 分为若干组使得组内平均数相等

[复制链接]
发表于 2019-10-5 22:44:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
将{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}分为若干组,使得每组的平均数均相等,有多少种分法?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-10-8 00:38:48 | 显示全部楼层
众所周知
平均数只能是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,这已经是计算机可以暴搜的范畴了
  1. #include<stdio.h>
  2. #define testmean(x) (count[x]==0||(val[x]<<1)/count[x]==11)
  3. int main(){
  4.   char q,w,e,r,t,y,u,i,o,p;
  5.   char val[4],count[4];
  6.   int right[4];
  7.   val[0]=val[1]=val[2]=val[3]=count[0]=count[1]=count[2]=count[3]=right[0]=right[1]=right[2]=right[3]=0;
  8.   for(q=0;q<1;q++){
  9.     val[q]+=1;count[q]+=1;
  10.   for(w=0;w<4;w++){
  11.     val[w]+=2;count[w]+=1;
  12.   for(e=0;e<4;e++){
  13.     val[e]+=3;count[e]+=1;
  14.   for(r=0;r<4;r++){
  15.     val[r]+=4;count[r]+=1;
  16.   for(t=0;t<4;t++){
  17.     val[t]+=5;count[t]+=1;
  18.   for(y=0;y<4;y++){
  19.     val[y]+=6;count[y]+=1;
  20.   for(u=0;u<4;u++){
  21.     val[u]+=7;count[u]+=1;
  22.   for(i=0;i<4;i++){
  23.     val[i]+=8;count[i]+=1;
  24.   for(o=0;o<4;o++){
  25.     val[o]+=9;count[o]+=1;
  26.   for(p=0;p<4;p++){
  27.     val[p]+=10;count[p]+=1;
  28.     if(testmean(0)&&testmean(1)&&testmean(2)&&testmean(3)){
  29.       right[(0!=count[1])+(0!=count[2])+(0!=count[3])]++;
  30.     }
  31.     val[p]-=10;count[p]-=1;
  32.   }
  33.     val[o]-=9;count[o]-=1;
  34.   }
  35.     val[i]-=8;count[i]-=1;
  36.   }
  37.     val[u]-=7;count[u]-=1;
  38.   }
  39.     val[y]-=6;count[y]-=1;
  40.   }
  41.     val[t]-=5;count[t]-=1;
  42.   }
  43.     val[r]-=4;count[r]-=1;
  44.   }
  45.     val[e]-=3;count[e]-=1;
  46.   }
  47.     val[w]-=2;count[w]-=1;
  48.   }
  49.     val[q]-=1;count[q]-=1;
  50.   }
  51.   return printf("%d %d %d %d %d",right[0],right[1],right[2],right[3],right[0]+right[1]+(right[2]>>1)+right[3]/6+1);
  52. }
复制代码
  1. time ./math
  2. 1 69 174 60 168
  3. real    0m0.024s
  4. user    0m0.016s
  5. sys     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种
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-10-8 12:08:41 | 显示全部楼层
本坛有过一个深入的讨论,但目前还没有最终结果。
自然数前段的均衡样本

点评

本论坛藏在许多“金矿”。:-)  发表于 2019-10-8 15:41
的确历史悠久了,完全没有印象我们还讨论过这样一个问题。 不过结论还是有一些的,比如特征方程(递推数列)是确定下来了。  发表于 2019-10-8 15:32
我都完全不知道我在5#说的是啥,好像接的是另一个帖子,汗....  发表于 2019-10-8 12:52
好老的帖子, :)  发表于 2019-10-8 12:51
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-10-9 09:59:01 | 显示全部楼层
本帖最后由 chyanog 于 2019-10-9 10:18 编辑
  1. Needs["Combinatorica`"];
  2. Length[res=Select[SetPartitions[Range[10]],AllTrue[Mean[#]==11/2&]]]

  3. Table[Length[Select[KSetPartitions[Range[10],i],Equal@@Mean/@#&]],{i,5}]
复制代码

range10 partition.png

评分

参与人数 1威望 +1 金币 +1 收起 理由
葡萄糖 + 1 + 1 很给力!

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2019-10-10 08:23:10 | 显示全部楼层

点评

赞赞赞  发表于 2019-10-10 08:32
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-9-24 09:16 , Processed in 0.027052 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表