Files
2026-03-15 23:40:49 +08:00

37 lines
688 B
Go

package main
import "math"
func getHappyString(n int, k int) string {
bt := int(math.Pow(2.0, float64(n-1)))
maxK := 3 * bt
if k > maxK {
return ""
}
slice := []byte{'a', 'b', 'c'}
sl := [][]byte{{'b', 'c'}, {'a', 'c'}, {'a', 'b'}}
res := make([]byte, 0, n)
if k <= bt {
res = append(res, slice[0])
bt = 0
} else if k > bt && k <= 2*bt {
res = append(res, slice[1])
} else {
res = append(res, slice[2])
bt *= 2
}
for i := 1; i < n; i++ {
temp := res[i-1]
i1 := int(temp - 'a')
bti := int(math.Pow(2.0, float64(n-i-1)))
if k <= bt+bti {
res = append(res, sl[i1][0])
} else {
res = append(res, sl[i1][1])
bt += bti
}
}
return string(res)
}