HDU5100 Chessboard【组合数学】

来源:互联网 发布:4核8g服务器mysql配置 编辑:程序博客网 时间:2024/06/05 02:09

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
26 35 3
Sample Output
3624
Source
BestCoder Round #17

问题链接: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;}