← Home
For problem statement at 0-999/0-99/90-99/93/problemD.txt this is a correct solution, but verifier at 0-999/0-99/90-99/93/verifierD.go ends with test 2 failed: expected 12 got 19
input: 1 3
exit status 1 can you fix the verifier? package main

import (
	"fmt"
)

const MOD int64 = 1000000007

func power(base, exp int64) int64 {
	res := int64(1)
	base %= MOD
	for exp > 0 {
		if exp%2 == 1 {
			res = (res * base) % MOD
		}
		base = (base * base) % MOD
		exp /= 2
	}
	return res
}

func geoSum(a, n int64) int64 {
	if n <= 0 {
		return 0
	}
	num := (power(3, n) - 1 + MOD) % MOD
	ans := (num * 500000004) % MOD
	ans = (ans * a) % MOD
	return ans
}

func sumF(n int64) int64 {
	if n <= 0 {
		return 0
	}
	ans := int64(4)
	ans = (ans + geoSum(4, n/2)) % MOD
	ans = (ans + geoSum(7, (n-1)/2)) % MOD

	K := (n + 1) / 2
	ans = (ans + geoSum(4, K/2)) % MOD
	ans = (ans + geoSum(7, (K-1)/2)) % MOD

	return ans
}

func main() {
	var L, R int64
	if _, err := fmt.Scan(&L, &R); err == nil {
		ans := (sumF(R) - sumF(L-1) + MOD) % MOD
		fmt.Println(ans)
	}
}