백준 1271 - 엄청난 부자2
풀이
$1 \le m \le n \le 10^{1000}$, $m$과 $n$은 10진 정수
n/m과 n%m을 구하면 되고 Go에서 지원하는 라이브러리를 사용하였다.
n, m의 조건을 보면 알겠지만 C 또는 CPP의 경우에는 직접 BigInteger를 구현해야 한다.
(따라서 이 포스팅은 사실 문제 풀이라기 보다는, Go에서 BigInteger의 사용법이라고 보는게 맞을 것 같다.)
소스 코드
package main
import (
"bufio"
"fmt"
"math/big"
"os"
)
var reader = bufio.NewReader(os.Stdin)
var writer = bufio.NewWriter(os.Stdout)
func main() {
defer writer.Flush()
var n, m big.Int
fmt.Fscan(reader, &n, &m)
div := new(big.Int)
div = div.Div(&n, &m)
mod := new(big.Int)
mod = mod.Mod(&n, &m)
fmt.Fprintln(writer, div)
fmt.Fprintln(writer, mod)
}
참고
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"math/big"
)
var reader = bufio.NewReader(os.Stdin)
var scanner = bufio.NewScanner(os.Stdin)
var writer = bufio.NewWriter(os.Stdout)
func init() {
scanner.Split(bufio.ScanWords)
}
func nextInt() int {
scanner.Scan()
n, _ := strconv.Atoi(scanner.Text())
return n
}
func main() {
defer writer.Flush()
var n, m big.Int
fmt.Fscan(reader, &n, &m)
add := new(big.Int)
add = add.Add(&n, &m)
fmt.Println("Add : ", add)
sub := new(big.Int)
sub = sub.Sub(&n, &m)
fmt.Println("Sub : ", sub)
mul := new(big.Int)
mul = mul.Mul(&n, &m)
fmt.Println("Mul : ", mul)
div := new(big.Int)
div = div.Div(&n, &m)
fmt.Println("Div : ", div)
mod := new(big.Int)
mod = mod.Mod(&n, &m)
fmt.Println("Mod : ", mod)
}