/
80.go
48 lines (43 loc) · 961 Bytes
/
80.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
45
46
47
48
package main
import "fmt"
import "math/big"
import "strconv"
func main() {
var total int64 = 0
for i := 2; i <= 99; i++ {
var a = big.NewRat(int64(i),1)
var x = big.NewRat(int64(i-1),1)
var sqrt = big.NewRat(1,1)
sqrt = Newt_Sqrt(a,x)
dec_string := sqrt.FloatString(102)
var partial_sum = Calc_Sum(dec_string)
total += partial_sum
}
fmt.Println(total)
}
func Newt_Sqrt(a *big.Rat, x *big.Rat) *big.Rat {
for i := 0; i < 12; i++ {
var quot1 = big.NewRat(1,1)
quot1 = quot1.Quo(x, big.NewRat(2,1))
var mul = big.NewRat(1,1)
mul = mul.Mul(big.NewRat(2,1),x)
var quot2 = big.NewRat(1,1)
quot2 = quot2.Quo(a, mul)
x = x.Add(quot1, quot2)
}
return x
}
func Calc_Sum(x string) int64 {
fmt.Println(x)
var sum int64 = 0
for i := 0; i < 99; i++ {
s := x[2+i:3+i]
number,_ := strconv.ParseInt(s, 10, 8)
sum += number
}
if sum != 0 {
number,_ := strconv.ParseInt(x[0:1], 10, 8)
sum += number
}
return sum
}