好多鱼

好多鱼!

http://www.nowcoder.com/questionTerminal/e3dd485dd23a42899228305658457927

Go语言题解来一个

Go 里面的隐式类型转换跟C++不一样要特别注意一下


比如

C++

int tmp = 22;
ceil(tmp/10.0) => 3

Go

var tmp int = 22
math.Ceil(tmp/10.0) => 2

为什么呢?

c++中 tmp / 10.0 的类型是 double, 进行了隐式转换
而 golang 中 tmp / 10.0 的类型是 int
因为go中的类型转换机制不一样 tmp 是确定的 int 类型, 而 10.0 在go中是不确定的类型常量,
所以 tmp / 10.0 被转换为了确定的类型 即 int
因此 手写了 一个 ceil

思路

刚开始想复杂了 其实没想的那么复杂
直接把原来在的鱼 , 可能吃的鱼的种类和可能被吃的种类全部标记上就行了,
剩下就再遍历一遍就好了, 为什么因为后加入的鱼之前不会互相吃, 原来的鱼之间也不会互相吃

package main

import (
    "fmt"
)

func main() {
    var minSize, maxSize, n, tmp int
    var rangeSize [1001]int
    _, _ = fmt.Scanf("%d %d", &minSize, &maxSize)
    _, _ = fmt.Scanf("%d", &n)
    for i := 1; i <= n; i++ {
        _, _ = fmt.Scanf("%d", &tmp)
        for j := 2 * tmp; j <= maxSize && j <= 10*tmp; j++ {
            rangeSize[j] = 1
        }
        for j := tmp / 2; j >= minSize && j >= ceilDec(tmp, 10); j-- {
            rangeSize[j] = 1
        }
    }
    tmp = 0
    for i := minSize; i <= maxSize; i++ {
        if rangeSize[i] == 0 {
            tmp++
        }
    }
    fmt.Print(tmp)
}

func ceilDec(num1, num2 int) int {
    if num1%num2 == 0 {
        return num1 / num2
    } else {
        return num1/num2 + 1
    }
}
全部评论

相关推荐

ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务