题解 ARC140E【Not Equal Rectangle】

萌萌构造题,随便构造构造就做出来了。似乎跟官方题解思路一样。

首先解决以下问题:给定一个质数 P,构造一个每个数在 0P1 的大小为 P2×P2 的矩阵,满足不存在 x1x2,y1y2 使得 ax1,y1=ax1,y2=ax2,y1=ax2,y2

类似 9×9 的数独那样,我们将所求矩阵划分为 P2 个大小为 P×P 的宫。如果一个宫 M 满足 Mi,j=(i+j+k)modP,就称其为 k 类宫,记作 Bk

例如,P=3 时:

B0=[012120201],B1=[120201012],B2=[201012120]

对于所求矩阵的第 i 行第 j 列的宫,令其为 BijmodP 即可。

例如,P=3 时:

A=[B0B0B0B0B1B2B0B2B1]=[012012012120120120201201201012120201120201012201012120012201120120012201201120012]

证明采用反证法:假设存在相等的四个数位于两行、两列的交点,显然必须在四个不同的宫,设左上、右上、左下、右下对应的宫分别是 a,b,c,d 类宫,则有 ab=cd,但是这不可能发生。

解决了上面的问题,原问题便迎刃而解了。

代码:

const int P = 23;
cin >> n >> m;
for(int i = 0; i < n; ++i) {
    for(int j = 0; j < m; ++j) {
        int val = ((i / P) * (j / P) + i + j) % P + 1;
        cout << val << " \n"[j == m - 1];
    }
}
posted @   rui_er  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示