解题思路
- 此题用穷举法,穷举所有情况,对所有情况进行分类讨论,大类里可能还会需要进行在分类讨论
- 先分为7的倍数和含有7的数
- 含有7的数可分为7在个位和7不在个位的情况
package main
import "fmt"
/*
选出与7有关的数
1: 7的倍数 n%7==0
2:17,27,37,47, 173 n%10 == 7
*/
func main() {
var num int
for {
if n, _ := fmt.Scan(&num); n == 0 {
return
}
count := 0
for i := 7; i <= num; i++ {
//case 1: 范围内所有7的倍数关系的数
if i%7 == 0 || check(i) {
count++
}
}
fmt.Println(count)
}
}
// case 2:含有7的数 17,27,37,171....
func check(i int) bool {
for i != 0 {
if i%10 == 7 {
return true
}
// case2的特殊情况,数 >100 173 => 17
i /= 10
}
return false
}