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 C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<pair<int, int>, int> PP;
const ll INF = 1LL << 60;
const ll MOD = 1000000007;

int GCD(int a, int b) { return b ? GCD(b, a%b) : a; }
//------------------------------------------------------------------------------------------------------------------------------

int N;
int C;
vector<vector<P>> V(N);
void func(int par, int chi, int color) {
    if (par != -1){
        V[par][chi].second = color;
        V[chi][par].second = color;
    }
    int c = color;
    for (int i = 0; i < V[chi].size(); i++) {
        if(V[chi][i].first != par){
            c++;
            func(chi, V[chi][i].first, c % C);
        }
    }
    return;
}

int main(void) { 
    int N, K;
    cin >> N >> K;
    int x = N / K;
    int y = (N - K / 2) / K + 1;
    if (K % 2 == 0) {
        cout << x * x * x + y * y * y << endl;
    }
    else{
        cout << x * x * x << endl;
    }

}