好多鱼

/* 一. 好多鱼
https://www.nowcoder.com/test/question/e3dd485dd23a42899228305658457927?pid=4236887&tid=31686442
*/
package main

import (
    "fmt"
)

var rangeSize [1001]int
var minSize, maxSize int

func main() {
    var n int
    var tmp int

    _, _ = fmt.Scanf("%d %d", &minSize, &maxSize)
    _, _ = fmt.Scanf("%d", &n)

    for i := 0; i < n; i++ {
        _, _ = fmt.Scanf("%d", &tmp)
        rangeSize[tmp] = 1
        ignore(tmp)
    }
    tmp = 0
    for i := minSize; i <= maxSize; i++ {
        if canput(i) {
            tmp++
            ignore(i)
            //fmt.Println(i)
        }
    }
    //fmt.Println()
    //for i := minSize; i <= maxSize; i++ {
    //  if rangeSize[i] != -1 {
    //      fmt.Print(i, " ")
    //  }
    //}
    //
    //fmt.Println()
    fmt.Print(tmp)
}

func ignore(fish int) {
    var size int
    for i := 2; i <= 10; i++ {
        size = i * fish
        if size <= 1000 {
            rangeSize[size] = -1
        }
        size = fish / i
        if fish <= i && fish%i == 0 && size >= 1 {
            rangeSize[size] = -1
        }
    }
}

// -1 表示不能放 0 表示可以放 1 表示原来就有

func canput(fish int) bool {
    if rangeSize[fish] == -1 {
        return false
    }
    if rangeSize[fish] == 1 {
        return true
    }
    for i := 2; i <= 10; i++ {
        if i*fish <= maxSize {
            if rangeSize[i*fish] == 1 {
                return false
            }
        }
    }

    return true
}

/*input
1 12
1
1

1 36
1
3

2  3  4  5 31 32 33 34 35 36
2  3  5  7 11 13 17 19 23 29 31 32 36
*/
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务