1、题目
数学竞赛,填空题8道,答对1题得4分,未答对得0分;问答题6道,答对1题得7分,未答对得0分。
参赛人数400人,至少有多少人的总分相同?
注意:
这个题问的是,假设在某种成绩分布中,相同分数最多的学生是x人。答案要求的是,在各种成绩分布中,x最小是多少。
2、思路
这个题肯定是一个精通数论的人精心设计的,7和4最大公约数是1,最小公倍数是28。简单想,填空题的得分有9中情况,对0道题到对8道题。简答题的得分有7中情况,对0道题到对7道题。这样,一共有63中题目对错情况。
但是,这些题目对错情况中,分数有相同的。原因就在于,对7道填空题和对4道简答题的总分一样。这样,对于填空题和简答题各刨除这28分,还剩:一道填空题,4分;两个简答题,每个7分。
剩下的题有多少种分数可能呢?比较容易回答,填空题对0道到1道,简答题对0道到2道。一共有6中情况,他们的得分各不相同。这样,对于这六种情况,算总分的时候,选择加28分的填空题或者28分的简答题,最后总分都是一样的。这样,这六种情况,是重复的,总共有63-6=57种不同的分数。
400个学生,57个分数,400/57=7...1。这样,前面题目中x的最小值就是8。
3、程序模拟
这里用的是java语言,代码com.lfqy.trying.solve.ScoreDistribution
如下:
package com.lfqy.trying.solve;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
* Created by chengxia on 2023/3/15. * 数学竞赛,填空题8道,答对1题,得4分,未答对,得0分; * 问答题6道,答对1题,得7分,未答对,得0分。 * 参赛人数400人,至少有多少人的总分相同? * * 这个题问的是,假设在某种成绩分布中,相同分数最多的学生是x人。 * 答案要求的是,在各种成绩分布中,x最小是多少。 */public class ScoreDistribution {
public static void main(String []args){
Map<Integer, Integer> treeMap = new TreeMap<>();
//查看有多少分数的情况,直接遍历穷举,两层嵌套循环
for(int i = 0 ; i <= 8; i++){
for(int j = 0; j <= 6; j++){
int sum = i * 4 + j * 7;
Integer tmp = treeMap.get(sum);
if (null == tmp){
treeMap.put(sum, 1);
}else{
treeMap.put(sum, tmp + 1);
}
}
}
//打印每个分数都有哪些学生
System.out.println("每个分数可能出现的情况数:");
//打印每一种分数分布
treeMap.forEach((k, v) -> {
System.out.println("Score " + k +": " + v);
});
//输出一共有多少种分数情况
System.out.println("可能的分数个数:\n" + treeMap.size());
//获得分数列表
List<Integer> list = new ArrayList<>(treeMap.keySet());
System.out.println("可能的分数列表:\n" + list);
//这里开始用400个学生开始模拟,每一个学生依次认领一个分数存储在scoreTreeMap结构中。
Map<Integer, ArrayList<Integer>> scoreTreeMap = new TreeMap<>();
for(int i = 1 ; i <= 400; i++){
ArrayList<Integer> tmpValList = scoreTreeMap.get((i-1)%57);
if (null == tmpValList){
ArrayList<Integer> tmpList = new ArrayList<>();
tmpList.add(i);
scoreTreeMap.put((i-1)%57, tmpList);
}else{
tmpValList.add(i);
}
}
//打印每个分数都有哪些学生
System.out.println("打印每个分数都有哪些学生:");
scoreTreeMap.forEach((k, v) -> {
System.out.println("Score " + list.get(k) +": " + v);
});
}
}
运行结果如下:
每个分数可能出现的情况数:
Score 0: 1
Score 4: 1
Score 7: 1
Score 8: 1
Score 11: 1
Score 12: 1
Score 14: 1
Score 15: 1
Score 16: 1
Score 18: 1
Score 19: 1
Score 20: 1
Score 21: 1
Score 22: 1
Score 23: 1
Score 24: 1
Score 25: 1
Score 26: 1
Score 27: 1
Score 28: 2
Score 29: 1
Score 30: 1
Score 31: 1
Score 32: 2
Score 33: 1
Score 34: 1
Score 35: 2
Score 36: 1
Score 37: 1
Score 38: 1
Score 39: 2
Score 40: 1
Score 41: 1
Score 42: 2
Score 43: 1
Score 44: 1
Score 45: 1
Score 46: 2
Score 47: 1
Score 48: 1
Score 49: 1
Score 50: 1
Score 51: 1
Score 52: 1
Score 53: 1
Score 54: 1
Score 55: 1
Score 56: 1
Score 58: 1
Score 59: 1
Score 60: 1
Score 62: 1
Score 63: 1
Score 66: 1
Score 67: 1
Score 70: 1
Score 74: 1
可能的分数个数:
57
可能的分数列表:
[0, 4, 7, 8, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 58, 59, 60, 62, 63, 66, 67, 70, 74]
打印每个分数都有哪些学生:
Score 0: [1, 58, 115, 172, 229, 286, 343, 400]
Score 4: [2, 59, 116, 173, 230, 287, 344]
Score 7: [3, 60, 117, 174, 231, 288, 345]
Score 8: [4, 61, 118, 175, 232, 289, 346]
Score 11: [5, 62, 119, 176, 233, 290, 347]
Score 12: [6, 63, 120, 177, 234, 291, 348]
Score 14: [7, 64, 121, 178, 235, 292, 349]
Score 15: [8, 65, 122, 179, 236, 293, 350]
Score 16: [9, 66, 123, 180, 237, 294, 351]
Score 18: [10, 67, 124, 181, 238, 295, 352]
Score 19: [11, 68, 125, 182, 239, 296, 353]
Score 20: [12, 69, 126, 183, 240, 297, 354]
Score 21: [13, 70, 127, 184, 241, 298, 355]
Score 22: [14, 71, 128, 185, 242, 299, 356]
Score 23: [15, 72, 129, 186, 243, 300, 357]
Score 24: [16, 73, 130, 187, 244, 301, 358]
Score 25: [17, 74, 131, 188, 245, 302, 359]
Score 26: [18, 75, 132, 189, 246, 303, 360]
Score 27: [19, 76, 133, 190, 247, 304, 361]
Score 28: [20, 77, 134, 191, 248, 305, 362]
Score 29: [21, 78, 135, 192, 249, 306, 363]
Score 30: [22, 79, 136, 193, 250, 307, 364]
Score 31: [23, 80, 137, 194, 251, 308, 365]
Score 32: [24, 81, 138, 195, 252, 309, 366]
Score 33: [25, 82, 139, 196, 253, 310, 367]
Score 34: [26, 83, 140, 197, 254, 311, 368]
Score 35: [27, 84, 141, 198, 255, 312, 369]
Score 36: [28, 85, 142, 199, 256, 313, 370]
Score 37: [29, 86, 143, 200, 257, 314, 371]
Score 38: [30, 87, 144, 201, 258, 315, 372]
Score 39: [31, 88, 145, 202, 259, 316, 373]
Score 40: [32, 89, 146, 203, 260, 317, 374]
Score 41: [33, 90, 147, 204, 261, 318, 375]
Score 42: [34, 91, 148, 205, 262, 319, 376]
Score 43: [35, 92, 149, 206, 263, 320, 377]
Score 44: [36, 93, 150, 207, 264, 321, 378]
Score 45: [37, 94, 151, 208, 265, 322, 379]
Score 46: [38, 95, 152, 209, 266, 323, 380]
Score 47: [39, 96, 153, 210, 267, 324, 381]
Score 48: [40, 97, 154, 211, 268, 325, 382]
Score 49: [41, 98, 155, 212, 269, 326, 383]
Score 50: [42, 99, 156, 213, 270, 327, 384]
Score 51: [43, 100, 157, 214, 271, 328, 385]
Score 52: [44, 101, 158, 215, 272, 329, 386]
Score 53: [45, 102, 159, 216, 273, 330, 387]
Score 54: [46, 103, 160, 217, 274, 331, 388]
Score 55: [47, 104, 161, 218, 275, 332, 389]
Score 56: [48, 105, 162, 219, 276, 333, 390]
Score 58: [49, 106, 163, 220, 277, 334, 391]
Score 59: [50, 107, 164, 221, 278, 335, 392]
Score 60: [51, 108, 165, 222, 279, 336, 393]
Score 62: [52, 109, 166, 223, 280, 337, 394]
Score 63: [53, 110, 167, 224, 281, 338, 395]
Score 66: [54, 111, 168, 225, 282, 339, 396]
Score 67: [55, 112, 169, 226, 283, 340, 397]
Score 70: [56, 113, 170, 227, 284, 341, 398]
Score 74: [57, 114, 171, 228, 285, 342, 399]
Process finished with exit code 0
网友评论