Skip to content

Instantly share code, notes, and snippets.

@gorakhargosh
Last active September 18, 2015 18:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gorakhargosh/135b899f37dcb7d4d76d to your computer and use it in GitHub Desktop.
Save gorakhargosh/135b899f37dcb7d4d76d to your computer and use it in GitHub Desktop.
package main
import (
"fmt"
"log"
"math/big"
)
// readInt reads an integer from standard input.
func readInt() (int, error) {
var a int
_, err := fmt.Scan(&a)
return a, err
}
// readInts reads a slice of integers from standard input.
func readInts(n int) ([]int, error) {
li := make([]int, n)
p := make([]interface{}, n)
for i := 0; i < n; i++ {
p[i] = &li[i]
}
b, err := fmt.Scanln(p...)
li = li[:b]
return li, err
}
// readBigInt reads a big integer from the standard input.
func readBigInt() (*big.Int, error) {
w := new(big.Int)
_, err := fmt.Scan(w)
return w, err
}
// readBigInts reads a slice of big integers from standard input.
func readBigInts(n int) ([]*big.Int, error) {
li := make([]big.Int, n)
p := make([]interface{}, n)
for i := 0; i < n; i++ {
p[i] = &li[i]
}
b, err := fmt.Scanln(p...)
ret := make([]*big.Int, b)
for i := 0; i < b; i++ {
ret[i] = &li[i]
}
return ret, err
}
// sumInts calculates the sum of a slice of integers.
func sumInts(numbers []int) int {
ret := 0
for i := 0; i < len(numbers); i++ {
ret += numbers[i]
}
return ret
}
// sumBigInts calculates the sum of a slice of big integers.
func sumBigInts(numbers []*big.Int) *big.Int {
var s = new(big.Int)
for i := 0; i < len(numbers); i++ {
s.Add(s, numbers[i])
}
return s
}
func main() {
n, err := readInt()
if err != nil {
log.Fatal(err)
}
ints, err := readBigInts(n)
if err != nil {
log.Fatal(err)
}
fmt.Println(sumBigInts(ints))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment