leetcode第372题 超级次方
做题的过程中发现问题:
- 做过的题目,有印象,但是相同的代码还是写不出来,思路梳理的不是很清晰
- 很久以前的时候 就做过 pow这个题目,但是第一次想如何求幂的时候,还是会for循环一个一个的乘,
- 刷题太少了,还是需要多做题,感觉才会更加的强烈.
举例 3 的 152次方
思路:
- 3 的 一次 等于 3
- 3 的 15 次 等于 3的10次 乘 3的5次
- 3的152次等于 3的150次乘以 3的2次
func superPow(a int, b []int) int {
a %= 1337
res := pow(a,b[0])
for i:= 1;i < len(b);i++{
res = pow(res,10) * pow(a,b[i]) % 1337
}
return res
}
func pow(a,b int)int{
res := 1;
for i := b;i != 0;i /= 2{
if i & 1 != 0{
res = res * a % 1337
}
a = a * a % 1337
}
return res
}