这个数学题蛮有意思的,在《组合数学》中讲过类似的方法
题意:n*n的方格中,用k*1的方格去填充,不能重叠,不能出界,问最大可以填多少面积
http://www.cnblogs.com/fish7/p/4084218.html 这个讲的蛮清楚的
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,k;
scanf("%d %d",&n,&k);
if(k>n) printf("0\n");
else {
if(n%k<=k/2) printf("%d\n",n*n-(n%k)*(n%k));
else printf("%d\n",n*n-(k-n%k)*(k-n%k));
}
}
return 0;
}