← Home
For problem statement at 0-999/0-99/70-79/78/problemD.txt this is a correct solution, but verifier at 0-999/0-99/70-79/78/verifierD.go ends with case 1 failed: expected 7681 got 2563
input:47
exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"math"
	"os"
)

func isqrt(x int64) int64 {
	r := int64(math.Sqrt(float64(x)))
	for (r+1)*(r+1) <= x {
		r++
	}
	for r*r > x {
		r--
	}
	return r
}

func rowCount(j, n int64) int64 {
	jj := j * j
	if jj+j <= n {
		d := 4*n - 3*jj - 2*j + 1
		s := isqrt(d)
		r := (s - j - 1) / 2
		return 2*r + j + 1
	}
	d := 4*n - 3*jj - 4*j
	if d < 0 {
		return 0
	}
	s := isqrt(d)
	t := (j - s + 1) / 2
	return j - 2*t + 1
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var k int64
	fmt.Fscan(in, &k)

	n := (k*k - 1) / 3
	var ans int64

	for j := int64(0); ; j++ {
		jj := j * j
		fmin := jj + j - jj/4
		if fmin > n {
			break
		}
		c := rowCount(j, n)
		if j == 0 {
			ans += c
		} else {
			ans += 2 * c
		}
	}

	out := bufio.NewWriter(os.Stdout)
	fmt.Fprint(out, ans)
	out.Flush()
}