For problem statement at 0-999/0-99/50-59/55/problemD.txt this is a correct solution, but verifier at 0-999/0-99/50-59/55/verifierD.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
const MOD = 2520
var (
lcmList []int
lcmToIdx map[int]int
memo [20][MOD][50]int64
digits []int
)
func init() {
lcmSet := make(map[int]bool)
var gen func(int, int)
gen = func(idx, cur int) {
if idx > 9 {
lcmSet[cur] = true
return
}
gen(idx+1, cur)
gen(idx+1, lcm(cur, idx))
}
gen(1, 1)
lcmList = make([]int, 0, len(lcmSet))
for k := range lcmSet {
lcmList = append(lcmList, k)
}
sort.Ints(lcmList)
lcmToIdx = make(map[int]int)
for i, v := range lcmList {
lcmToIdx[v] = i
}
}
func gcd(a, b int) int {
for b != 0 {
a, b = b, a%b
}
return a
}
func lcm(a, b int) int {
return a / gcd(a, b) * b
}
func solve(n int64) int64 {
if n <= 0 {
return 0
}
s := strconv.FormatInt(n, 10)
digits = make([]int, len(s))
for i, ch := range s {
digits[i] = int(ch - '0')
}
for i := range memo {
for j := range memo[i] {
for k := range memo[i][j] {
memo[i][j][k] = -1
}
}
}
return dfs(0, 0, lcmToIdx[1], true, false)
}
func dfs(pos, rem, lcmIdx int, tight, started bool) int64 {
if pos == len(digits) {
if started && rem%lcmList[lcmIdx] == 0 {
return 1
}
return 0
}
if !tight && started {
if val := memo[pos][rem][lcmIdx]; val != -1 {
return val
}
}
limit := 9
if tight {
limit = digits[pos]
}
var res int64
for d := 0; d <= limit; d++ {
newTight := tight && (d == limit)
if !started && d == 0 {
res += dfs(pos+1, 0, lcmToIdx[1], newTight, false)
} else {
newRem := (rem*10 + d) % MOD
newLcmIdx := lcmIdx
if d != 0 {
if !started {
newLcmIdx = lcmToIdx[d]
} else {
newLcmIdx = lcmToIdx[lcm(lcmList[lcmIdx], d)]
}
}
res += dfs(pos+1, newRem, newLcmIdx, newTight, true)
}
}
if !tight && started {
memo[pos][rem][lcmIdx] = res
}
return res
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Scan()
t, _ := strconv.Atoi(scanner.Text())
for i := 0; i < t; i++ {
scanner.Scan()
l, _ := strconv.ParseInt(scanner.Text(), 10, 64)
scanner.Scan()
r, _ := strconv.ParseInt(scanner.Text(), 10, 64)
fmt.Println(solve(r) - solve(l-1))
}
}
```