← Home
For problem statement at 0-999/400-499/450-459/457/problemD.txt this is a correct solution, but verifier at 0-999/400-499/450-459/457/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"fmt"
)

func main() {
	var n, m, k int
	if _, err := fmt.Scan(&n, &m, &k); err != nil {
		return
	}

	P := make([]float64, n*n+1)
	P[0] = 1.0
	for c := 1; c <= n*n; c++ {
		if c <= k {
			P[c] = P[c-1] * float64(k-c+1) / float64(m-c+1)
		} else {
			P[c] = 0
		}
	}

	C := make([]float64, n+1)
	C[0] = 1.0
	for i := 1; i <= n; i++ {
		C[i] = C[i-1] * float64(n-i+1) / float64(i)
	}

	var sum, comp float64
	for i := 0; i <= n; i++ {
		for j := 0; j <= n; j++ {
			c := n*i + n*j - i*j
			y := C[i]*C[j]*P[c] - comp
			t := sum + y
			comp = (t - sum) - y
			sum = t
		}
	}

	if sum > 1e99 {
		fmt.Println("1e99")
	} else {
		fmt.Printf("%.15g\n", sum)
	}
}