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 Scala (2.11.7) (judge verdict: Time Limit Exceeded)

import java.util.Scanner

import scala.collection.mutable.ArrayBuffer

object Main {
  def main(args: Array[String]): Unit = println(solve(new Scanner(System.in)))

  def solve(in: String): String = solve(new Scanner(in))

  def solve(sc: Scanner): String = {
    val N = sc.nextInt
    val K = sc.nextInt

//    val r = new ArrayBuffer[(Int, Int, Int)]()
    var result = 0
    var i = 1
    while (i <= N) {
      var j = K - i
      while (j < 1) j += K
      while (j <= N) {
        var k = K - j
        while (k < 1) k += K
        while (k <= N) {
          if ((i + k) % K == 0) {
//            r.append((i, j, k))
            result += 1
          }
          k += K
        }
        j += K
      }
      i += 1
    }

//    r.foreach(println)
    result.toString
  }
}