一个B题的思路 B题先填充相同的字符(比如r),然后依次填充e、d、r package main import ( "fmt" "math" "strings" ) func main() { x := 0 fmt.Scan(&x) n := math.Floor(0.5 * (-1 + math.Sqrt(1.0+8.0*float64(x)))) var res strings.Builder res.Grow(100000) for i := 0; i < int(n); i++ { res.WriteByte('r') } x = x - int(n*(n+1)/2.0) for i := 0; i < x; i++ { if i%3 == 0 { res.WriteByte('e') } else if i%3 == 1 { res.WriteByte('d') } else { res.WriteByte('r') } } fmt.Println(res.String()) }