| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | func isAdditiveNumber(num string) bool {	n := len(num)	if n < 3 { // At least 3 chars		return false	}	for i := 1; i < (n+1)/2; i++ {		if num[0] == '0' && i != 1 { // Avoid 00 + ...			return false		}		for j := 1; j <= (n-i)/2; j++ {			if num[i] == '0' && j != 1 { // Avoid ... + 0x				break			}			var one, two int			fmt.Sscan(num[0:i], &one)			fmt.Sscan(num[i:i+j], &two)			if search(num, i+j, one, two) {				return true			}		}	}	return false}func search(num string, idx, one, two int) bool {	n := len(num)	if idx == n {		return true	} else if num[idx] == '0' {		if one+two != 0 {			return false		}		return search(num, idx+1, 0, 0) // 00000000... is valid	}	var three int	for three = 0; three < one+two && idx < n; idx++ {		three = three*10 + int(num[idx]-'0')	}	if three == one+two {		return search(num, idx, two, three)	}	return false}type pair struct {	_1 int	_2 int}
 |