1侈离、題目
數(shù)學(xué)競(jìng)賽近弟,填空題8道,答對(duì)1題得4分,未答對(duì)得0分擒滑;問答題6道,答對(duì)1題得7分何乎,未答對(duì)得0分饵较。
參賽人數(shù)400人,至少有多少人的總分相同?
注意:
這個(gè)題問的是,假設(shè)在某種成績(jī)分布中镐捧,相同分?jǐn)?shù)最多的學(xué)生是x人潜索。答案要求的是,在各種成績(jī)分布中懂酱,x最小是多少竹习。
2、思路
這個(gè)題肯定是一個(gè)精通數(shù)論的人精心設(shè)計(jì)的列牺,7和4最大公約數(shù)是1整陌,最小公倍數(shù)是28。簡(jiǎn)單想瞎领,填空題的得分有9中情況蔓榄,對(duì)0道題到對(duì)8道題。簡(jiǎn)答題的得分有7中情況默刚,對(duì)0道題到對(duì)7道題甥郑。這樣,一共有63中題目對(duì)錯(cuò)情況荤西。
但是澜搅,這些題目對(duì)錯(cuò)情況中,分?jǐn)?shù)有相同的邪锌。原因就在于勉躺,對(duì)7道填空題和對(duì)4道簡(jiǎn)答題的總分一樣。這樣觅丰,對(duì)于填空題和簡(jiǎn)答題各刨除這28分饵溅,還剩:一道填空題,4分妇萄;兩個(gè)簡(jiǎn)答題蜕企,每個(gè)7分咬荷。
剩下的題有多少種分?jǐn)?shù)可能呢?比較容易回答轻掩,填空題對(duì)0道到1道幸乒,簡(jiǎn)答題對(duì)0道到2道。一共有6中情況唇牧,他們的得分各不相同罕扎。這樣,對(duì)于這六種情況丐重,算總分的時(shí)候腔召,選擇加28分的填空題或者28分的簡(jiǎn)答題,最后總分都是一樣的扮惦。這樣宴咧,這六種情況,是重復(fù)的径缅,總共有63-6=57種不同的分?jǐn)?shù)掺栅。
400個(gè)學(xué)生,57個(gè)分?jǐn)?shù)纳猪,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. * 數(shù)學(xué)競(jìng)賽,填空題8道,答對(duì)1題,得4分,未答對(duì),得0分; * 問答題6道,答對(duì)1題,得7分,未答對(duì),得0分鼠锈。 * 參賽人數(shù)400人,至少有多少人的總分相同? * * 這個(gè)題問的是闪檬,假設(shè)在某種成績(jī)分布中,相同分?jǐn)?shù)最多的學(xué)生是x人购笆。 * 答案要求的是粗悯,在各種成績(jī)分布中,x最小是多少同欠。 */public class ScoreDistribution {
public static void main(String []args){
Map<Integer, Integer> treeMap = new TreeMap<>();
//查看有多少分?jǐn)?shù)的情況样傍,直接遍歷窮舉,兩層嵌套循環(huán)
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);
}
}
}
//打印每個(gè)分?jǐn)?shù)都有哪些學(xué)生
System.out.println("每個(gè)分?jǐn)?shù)可能出現(xiàn)的情況數(shù):");
//打印每一種分?jǐn)?shù)分布
treeMap.forEach((k, v) -> {
System.out.println("Score " + k +": " + v);
});
//輸出一共有多少種分?jǐn)?shù)情況
System.out.println("可能的分?jǐn)?shù)個(gè)數(shù):\n" + treeMap.size());
//獲得分?jǐn)?shù)列表
List<Integer> list = new ArrayList<>(treeMap.keySet());
System.out.println("可能的分?jǐn)?shù)列表:\n" + list);
//這里開始用400個(gè)學(xué)生開始模擬铺遂,每一個(gè)學(xué)生依次認(rèn)領(lǐng)一個(gè)分?jǐn)?shù)存儲(chǔ)在scoreTreeMap結(jié)構(gòu)中衫哥。
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);
}
}
//打印每個(gè)分?jǐn)?shù)都有哪些學(xué)生
System.out.println("打印每個(gè)分?jǐn)?shù)都有哪些學(xué)生:");
scoreTreeMap.forEach((k, v) -> {
System.out.println("Score " + list.get(k) +": " + v);
});
}
}
運(yùn)行結(jié)果如下:
每個(gè)分?jǐn)?shù)可能出現(xiàn)的情況數(shù):
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
可能的分?jǐn)?shù)個(gè)數(shù):
57
可能的分?jǐn)?shù)列表:
[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]
打印每個(gè)分?jǐn)?shù)都有哪些學(xué)生:
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