← Home
For problem statement at 1000-1999/1100-1199/1150-1159/1151/problemC.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1150-1159/1151/verifierC.go ends with All tests passed can you fix the verifier? package main

import (
	"fmt"
)

const MOD int64 = 1000000007

func sumN(n int64) int64 {
	var oddCount, evenCount int64
	p := int64(1)
	isOdd := true

	for n > 0 {
		take := n
		if take > p {
			take = p
		}
		if isOdd {
			oddCount = (oddCount + take) % MOD
		} else {
			evenCount = (evenCount + take) % MOD
		}
		n -= take
		p *= 2
		isOdd = !isOdd
	}

	res := (oddCount * oddCount) % MOD
	evenPart := (evenCount * ((evenCount + 1) % MOD)) % MOD
	res = (res + evenPart) % MOD
	return res
}

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