分数分布数学题

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容