题解:P11925 [PA 2025] 显像管 / Migawka

· · 题解

题意为在一个黑白像素点组成的表格中,当且仅当一个方格的对角线颜色(黑白)相同时,方格颜色会反转。例如:

这就是一个错误方格,左上角的四个像素点会在下一秒颜色反转。所以我们可以验证这幅图。

第一次变化会把下面绿框中的像素反转。

变成这种状态。

在多次反转后,最终会变成这样。

我们再来考虑这幅图,图像为8\times8矩阵。

它会反转成这样。

可以证明8\times8矩阵里这种情况多次反转后不同图案出现的次数是最多的。观察规律发现这幅图初始状态第一行首个像素为黑色,其余全为白色。其他行首个像素为白色,末尾像素为黑色,其余像素黑白逐行交替,推断出代码。

#include <bits/stdc++.h>
using namespace std;
int main()
{
    cout << 0;                    // 第一行第一个暗
    for (int i = 1; i <= 99; i++) // 第一行其余亮
        cout << 1;
    cout << '\n';
    for (int i = 1; i <= 99; i++)
    {
        cout << 1;                    // 剩余行首个亮
        for (int j = 1; j <= 98; j++) // 其余逐行明暗交替
            if (i % 2 == 1)           // 输出
                cout << 0;
            else
                cout << 1;
        cout << 0 << '\n'; // 剩余行末尾暗
    }
    return 0;
}