高精度加法-go
package main
import(
"fmt"
"strconv"
)
func main(){
var num1, num2 string
fmt.Scan(&num1, &num2)
if len(num1) < len(num2){
num1, num2 = num2, num1
}
numSli1, numSli2 := make([]int, 0, len(num1)), make([]int, 0, len(num2))
for _, item := range num1{
tempNum, _ := strconv.Atoi(string(item))
numSli1 = append(numSli1, tempNum)
}
for _, item := range num2{
tempNum, _ := strconv.Atoi(string(item))
numSli2 = append(numSli2, tempNum)
}
numSli1 = rev(numSli1)
numSli2 = rev(numSli2)
var add int
numSli := make([]int, 0, len(numSli1)*2)
for index := range numSli1{
if index < len(numSli2){
sum := numSli1[index] + numSli2[index] + add
numSli = append(numSli, sum % 10)
add = sum/10
continue
}
sum := numSli1[index] + add
numSli = append(numSli, sum % 10)
add = sum/10
}
if add != 0{
numSli = append(numSli, add)
}
numSli = rev(numSli)
for _, item := range numSli{
fmt.Printf("%d", item)
}
}
func rev(sli []int)[]int{
var i int
for i < len(sli)/2{
sli[i], sli[len(sli)-i-1] = sli[len(sli)-i-1], sli[i]
i++
}
return sli
}