Problem:
Score : 300 points

Problem Statement

You are given integers N and K. Find the number of triples (a,b,c) of positive integers not greater than N such that a+b,b+c and c+a are all multiples of K.
The order of a,b,c does matter, and some of them can be the same.

Constraints

1 \leq N,K \leq 2\times 10^5

N and K are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the number of triples (a,b,c) of positive integers not greater than N such that a+b,b+c and c+a are all multiples of K.

Sample Input 1

3 2

Sample Output 1

9

(1,1,1),(1,1,3),(1,3,1),(1,3,3),(2,2,2),(3,1,1),(3,1,3),(3,3,1) and (3,3,3) satisfy the condition.

Sample Input 2

5 3

Sample Output 2

1

Sample Input 3

31415 9265

Sample Output 3

27

Sample Input 4

35897 932

Sample Output 4

114191

Solution in Python (3.4.3) (judge verdict: Wrong Answer)

def fact(n: int)->int:
    if n == 1:
        return 1
    return n * fact(n-1)


def triangular_relationship(N: int, K: int)->int:
    res = 0
    for g1 in range(max(2//K, 1), N+1):
        update = False
        for g3 in range(g1, N+1):
            for g2 in range(g3, g1+g3):
                if K % 2 != 0 and (g1 + g2 + g3) % 2 != 0:
                    continue
                if - g1 + g2 + g3 > (2*N) // K:
                    continue
                eq = 0
                if g1 - g2 + g3 == g1 + g2 - g3:
                    eq += 1
                if g1 + g2 - g3 == -g1 + g2 + g3:
                    eq += 1

                update = True
                res += 6 // fact(eq+1)
        if not update and res > 0:
            break
    return res


if __name__ == "__main__":
    N, K = map(int, input().split())
    ans = triangular_relationship(N, K)
    print(ans)