HDU5100 Chessboard【组合数学】

Chessboard

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 1222    Accepted Submission(s): 526
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 (T10000). 
In the next T lines contain T cases , Each case has two integers n and k. (1n,k100)
Output
Print the maximum number of chessboard squares tiled.
Sample Input
2 6 3 5 3
Sample Output
36 24
Source

问题链接HDU5100 Chessboard

问题简述:(略)

问题分析这是一个组合数学问题,计算原理参见参考链接。

程序说明:(略)

题记:(略)


参考链接Matrix67: The Aha Moments


AC的C++语言程序如下:

/* HDU5100 Chessboard */

#include <iostream>

using namespace std;

int getnum(int n, int k)
{
    if(n < k)
        return 0;
    int m = n % k;
    if(m <= k / 2)
        return n * n - m * m;
    else
        return n * n - (k - m) *(k - m);
}

int main()
{
    std::ios::sync_with_stdio(false);

    int t, n, k;

    cin >> t;
    while(t--) {
        cin >> n >> k;

        cout << getnum(n, k) << endl;
    }

    return 0;
}




posted on 2017-07-28 09:44  海岛Blog  阅读(150)  评论(0编辑  收藏  举报

导航