首页 新闻 搜索 专区 学院

突然想到的一个很有意思的题

0
悬赏园豆:5 [已解决问题] 解决于 2021-04-27 22:32

今天早上无聊看着计时器(数字形式),突然想出一个很有意思的题,如下:

问一天的时间中出现次数最多的数字,出现时间最多的数字,请用自己熟悉的编程语言计算结果

T-MAC泛泛之交的主页 T-MAC泛泛之交 | 初学一级 | 园豆:192
提问于:2021-03-17 16:13
< >
分享
最佳答案
0

public static void main(String[] args) {
Map<Integer,Integer> map = new HashMap<>();
List<Integer> list1 = new ArrayList<>();
int a0 = 0;
int a1 = 0;
int a2 = 0;
int a3 = 0;
int a4 = 0;
int a5 = 0;
int a6 = 0;
int a7 = 0;
int a8 = 0;
int a9 = 0;
int time = 0;
List<String> list = new ArrayList<>();
for (int k = 0; k < 24; k++) {
int minutes = 0;
for (int j = 0; j < 60; j++) {
int second = 0;
for (int i = 0; i < 60; i++) {
String data;
if (k < 10) {
if (j < 10) {
if (i < 10) {
data = 0 + "" + time + "" + 0 + minutes + "" + 0 + second;
list.add(data);
} else {
data = 0 + "" + time + "" + 0 + minutes + "" + second;
list.add(data);
}
} else {
if (i < 10) {
data = 0 + "" + time + "" + minutes + "" + 0 + second;
list.add(data);
} else {
data = 0 + "" + time + "" + minutes + "" + second;
list.add(data);
}
}
} else {
if (j < 10) {
if (i < 10) {
data = time + "" + 0 + minutes + "" + 0 + second;
list.add(data);
} else {
data = time + "" + 0 + minutes + "" + second;
list.add(data);
}
} else {
if (i < 10) {
data = time + "" + minutes + "" + 0 + second;
list.add(data);
} else {
data = time + "" + minutes + "" + second;
list.add(data);
}
}
}
second++;
}
minutes++;
}
time++;
}

    Iterator<String> iterator = list.stream().iterator();
    while (iterator.hasNext()){
        String next = iterator.next();
        String[] split = next.split("");
        for (String s1 : split){
            switch (Integer.parseInt(s1.trim())){
                case 0:a0++;break;
                case 1:a1++;break;
                case 2:a2++;break;
                case 3:a3++;break;
                case 4:a4++;break;
                case 5:a5++;break;
                case 6:a6++;break;
                case 7:a7++;break;
                case 8:a8++;break;
                case 9:a9++;break;
            }
        }
    }
    map.put(0,a0);
    map.put(1,a1);
    map.put(2,a2);
    map.put(3,a3);
    map.put(4,a4);
    map.put(5,a5);
    map.put(6,a6);
    map.put(7,a7);
    map.put(8,a8);
    map.put(9,a9);
    System.out.println(map);
}

}

收获园豆:5
炫彩漂流瓶 | 菜鸟二级 |园豆:218 | 2021-04-14 17:45

哈哈有心了

T-MAC泛泛之交 | 园豆:192 (初学一级) | 2021-04-27 22:31
其他回答(4)
0

出现次数最多的和时间最多的还用想吗?按道理时间最多的可能就是1、2吧,次数也是1、2

小草上飞飞 | 园豆:302 (菜鸟二级) | 2021-03-17 16:22

不对,时间最多的是1,次数也是吧,如果 九点十三分写为 9:13的话

支持(0) 反对(0) 小草上飞飞 | 园豆:302 (菜鸟二级) | 2021-03-17 16:23

@小草上飞飞: 数字形式的时间

支持(0) 反对(0) T-MAC泛泛之交 | 园豆:192 (初学一级) | 2021-03-18 10:46

@T-MAC泛泛之交: 等我明天给你写个C# 的,枚举一天的秒数计算下,反正计算机算的,又不是我数的。
我感觉1最多了,如果 九点十三分写为 9:13 而不是09:13

支持(0) 反对(0) 小草上飞飞 | 园豆:302 (菜鸟二级) | 2021-03-18 10:48

@T-MAC泛泛之交: 24小时制

支持(0) 反对(0) 小草上飞飞 | 园豆:302 (菜鸟二级) | 2021-03-18 10:49
0

明明时1啊!

星星点灯6 | 园豆:169 (初学一级) | 2021-03-17 18:52
0

云玩家的观点:假定上午1点的表示方法为01:00:00,24点、0点表示为00:00:00则1和2最多且一样多。

理由:60进制的分秒的个位均为0-9且出现的次数一样;十位均为0-5且出现的次数一样。故0-5出现次数最多且一样多

关于小时:24进制,个位:0-3出现的次数最多且一样多;十位:0-2出现的次数一样多。故0-2出现的次数最多且一样多

综上,0-2出现的次数最多且一样多。这样分析对吗?

当然,如果24点、0点表示为0:00:00,这就是另一种答案了。

龙葛格 | 园豆:770 (小虾三级) | 2021-03-17 20:29

以数字形式为模板

支持(0) 反对(0) T-MAC泛泛之交 | 园豆:192 (初学一级) | 2021-03-18 10:47
0

给0~9个数字建一个bitmap,即为下标值;然后遍历,每次给对应的下标加一下;遍历结束以后找出最大数是不是就可以了

黄树超 | 园豆:202 (菜鸟二级) | 2021-03-30 15:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册