定义一个函数,它接受两个非负整数 a 和 b 并返回 a^b 的最后一位十进制数字。请注意,a 或 b 可能非常大!您可以假设输入始终有效。
package kata
import (
"math"
"strconv"
)
func ParseInt(n string) int {
num, _ := strconv.ParseInt(n, 10, 64)
return int(num)
}
func LastDigit(n1, n2 string) int {
exponent := ParseInt(n2)
if exponent == 0 {
return 1
}
num := int(ParseInt(string(n1[len(n1)-1])))
var lastDigit int
if num%2 == 0 {
lastDigit = 6
} else {
lastDigit = 1
}
switch n1[len(n1)-1] {
case '0', '1', '5', '6':
return num
case '4', '9':
if exponent%2 == 0 {
return lastDigit
}
return num
default:
reminder := exponent % 4
if reminder == 0 {
return lastDigit
}
result := int(math.Pow(float64(num), float64(reminder))) * lastDigit % 10
return result
}
}
测试用例错误:期望 7 等于 1 测试用例错误:期望 3 等于 1
我尝试使用代码编辑器,一切似乎都正常。但它仍然未能通过一些测试用例。