Chessboard
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1086 Accepted Submission(s): 463
Problem Description
Consider the problem of tiling an n×n chessboard by polyomino pieces that are k×1 in size; Every one of the k pieces of each polyomino tile must align exactly with one of the chessboard squares. Your task is to figure out the maximum number of chessboard squares tiled.
Input
There are multiple test cases in the input file.
First line contain the number of cases T ( T≤10000 ).
In the next T lines contain T cases , Each case has two integers n and k. ( 1≤n,k≤100 )
First line contain the number of cases T ( T≤10000 ).
In the next T lines contain T cases , Each case has two integers n and k. ( 1≤n,k≤100 )
Output
Print the maximum number of chessboard squares tiled.
Sample Input
2 6 3 5 3
Sample Output
36 24
Source
题意:在一个n*n的网格中放1*k大小的瓷片,问可以放置的最大小网格数是多少
思维探索
1)n<k一定不能放
2)r=n%k:
r<=k/2时,现横着放,最后r列竖着放,最后只剩r*r的小方格不能放
r>k/2时,现横着放,最后r+k的方格中按风车形状放,最后只剩(k-r)*(k-r)的方格不能放
#include<cstdio>
int main()
{
int t,n,k;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
int ans;
if(n<k)
ans=0;
else
{
int r=n%k;
if(r<=k/2)
ans=n*n-r*r;
else
ans=n*n-(k-r)*(k-r);
}
printf("%d\n",ans);
}
return 0;
}