-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy path10014.go
44 lines (38 loc) · 787 Bytes
/
10014.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// UVa 10014 - Simple calculations
package main
import (
"fmt"
"os"
)
var (
n int
af, al float64
)
func solve(c []float64) float64 {
// a[1] = (n*a[0] + a[n+1] - 2*(n*c[1] + (n-1)*c[2] + ... + 1*c[n])) / (n + 1)
var sum float64
for i, cv := range c {
sum += float64(n-i) * cv
}
return (float64(n)*af + al - 2*sum) / float64(n+1)
}
func main() {
in, _ := os.Open("10014.in")
defer in.Close()
out, _ := os.Create("10014.out")
defer out.Close()
var kase int
for fmt.Fscanf(in, "%d", &kase); kase > 0; kase-- {
fmt.Fscanf(in, "\n%d", &n)
fmt.Fscanf(in, "%f", &af)
fmt.Fscanf(in, "%f", &al)
c := make([]float64, n)
for i := range c {
fmt.Fscanf(in, "%f", &c[i])
}
fmt.Fprintf(out, "%.2f\n", solve(c))
if kase > 1 {
fmt.Fprintln(out)
}
}
}