82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
func pow(n int, e uint) int {
|
|
if e == 0 {
|
|
return 1
|
|
}
|
|
prod := n
|
|
for i := uint(2); i <= e; i++ {
|
|
prod *= n
|
|
}
|
|
return prod
|
|
}
|
|
|
|
func abs(n int) int {
|
|
if n >= 0 {
|
|
return n
|
|
}
|
|
return -n
|
|
}
|
|
|
|
func commatize(n int) string {
|
|
s := fmt.Sprintf("%d", n)
|
|
if n < 0 {
|
|
s = s[1:]
|
|
}
|
|
le := len(s)
|
|
for i := le - 3; i >= 1; i -= 3 {
|
|
s = s[0:i] + "," + s[i:]
|
|
}
|
|
if n >= 0 {
|
|
return " " + s
|
|
}
|
|
return "-" + s
|
|
}
|
|
|
|
func main() {
|
|
prod := 1
|
|
sum := 0
|
|
const (
|
|
x = 5
|
|
y = -5
|
|
z = -2
|
|
one = 1
|
|
three = 3
|
|
seven = 7
|
|
)
|
|
p := pow(11, x)
|
|
var j int
|
|
|
|
process := func() {
|
|
sum += abs(j)
|
|
if abs(prod) < (1<<27) && j != 0 {
|
|
prod *= j
|
|
}
|
|
}
|
|
|
|
for j = -three; j <= pow(3, 3); j += three {
|
|
process()
|
|
}
|
|
for j = -seven; j <= seven; j += x {
|
|
process()
|
|
}
|
|
for j = 555; j <= 550-y; j++ {
|
|
process()
|
|
}
|
|
for j = 22; j >= -28; j -= three {
|
|
process()
|
|
}
|
|
for j = 1927; j <= 1939; j++ {
|
|
process()
|
|
}
|
|
for j = x; j >= y; j -= -z {
|
|
process()
|
|
}
|
|
for j = p; j <= p+one; j++ {
|
|
process()
|
|
}
|
|
fmt.Println("sum = ", commatize(sum))
|
|
fmt.Println("prod = ", commatize(prod))
|
|
}
|