AcWing 793. 高精度乘法 go 高精度 【20230425更新】
原题链接
简单
作者:
Gnoloayoul
,
2022-11-29 20:32:08
,
所有人可见
,
阅读 132
主体思路
- 使用数组逆序表示数值
例如:123 $\rightarrow$ [3, 2, 1]
- 模拟乘法过程
标准代码
package main
import (
"fmt"
"bufio"
"os"
)
var (
A string
B int
numA []int
in = bufio.NewReader(os.Stdin)
out = bufio.NewWriter(os.Stdout)
)
func highMul(numA []int, B int) []int { // 核心:高精度乘法
ans := []int{}
t := 0
for i := 0; i < len(numA) || t != 0; i++ {
if i < len(numA) { t += numA[i] * B }
ans = append(ans, t % 10)
t /= 10
}
for len(ans) > 1 && ans[len(ans) - 1] == 0 { ans = ans[:len(ans) - 1] }
return ans
}
func main() {
fmt.Fscan(in, &A, &B)
for i := len(A) - 1; i >= 0; i-- { numA = append(numA, int(A[i] - '0')) }
ans := highMul(numA, B)
for i := len(ans) - 1; i >= 0; i-- { fmt.Fprint(out, ans[i]) }
out.Flush()
}
很棒