174 Hollow Square Laminae II

Problem 174

这个题目是 173 的续,描述是一样的。

当只有 8 个瓷砖时,只有一种拼法。因此 型。当有 32 个瓷砖时,只有两种不同的拼法。因此当 型。

时, 型的个数。已知

代码思路和之前类似,不同之处是需要统计瓷砖 时,拼法的数量。因此需要声明一个数组统计次数。从题目给出的已知条件,counts 中值为 15 的元素个数是 832。

int[] counts = new int[N + 1];
for (int i = 0; i < counts.Length; i++)
{
    counts[i] = 0;
}

for (int hole = 1; hole < N / 4; hole++)
{
    int min_length = hole + 1;

    for (int max_length = min_length; ; max_length += 2)
    {
        int a_1 = min_length;
        int a_n = max_length;
        int n = (a_n - a_1) / 2 + 1;
        int total = (a_1 + a_n) * n / 2 * 4;
        if (total <= N)
        {
            counts[total]++;
        }
        else
        {
            break;
        }
    }
}
,即统计 counts 中值从 1 到 10 的个数。
int sum = 0;
for (int j = 0; j < counts.Length; j++)
{
    if (counts[j] <= 10 && counts[j] >= 1)
    {
        sum++;
    }
}