ARC140E Not Equal Rectangle题解

题面

(大致是官方题解翻译加上一点自己的理解)

如果我们可以找到一个数字 p p p 满足可以构造出一个 p 2 ∗ p 2 p^2 *p^2 p2p2 的大正方形符合题目条件

那么我们对于一个询问 可以截取这个正方形的左上角

接下来我们考虑构造一个小方形 大小是 p ∗ p p*p pp

对于小方形 B k B_k Bk

我们在位置 ( i , j ) (i,j) (i,j) ( i + j + k ) m o d   p (i+j+k)mod~p (i+j+k)mod p (注意 这里所有的 i , j i,j i,j都是 [ 0 , p − 1 ] [0,p-1] [0,p1] 的)

那么我们把大正方形用小正方形填充

具体说 把大正方形划分成 p ∗ p p*p pp 的格子(单位格长 p p p)

那么我们在 P i , j P_{i,j} Pi,j B i ∗ j   m o d   p B_{i*j~mod~p} Bij mod p

接着我们证明对于怎么样的 p p p 可以满足题目要求,以及对于这样的 p p p 为什么这种构造合法

首先 在一个/两个小正方形里 没法满足要求(一个正方形一行/一列内没有两个相同元素)

我们设左上 右下的坐标分别是 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2)

假设分别属于 a , b , c , d a,b,c,d a,b,c,d 四个小正方形里

那么
x 1 + y 1 + a ≡ x 2 + y 1 + c   ( m o d   p ) x1+y1+a \equiv x2+y1+c~(mod~p) x1+y1+ax2+y1+c (mod p)
x 2 − x 1 ≡ a − c x2-x1 \equiv a-c x2x1ac

同理可得

x 2 − x 1 ≡ b − d x2-x1 \equiv b-d x2x1bd

因此

a − c ≡ b − d ( m o d   p ) a-c \equiv b-d(mod~p) acbd(mod p)

假设他们在大正方形里, a = ( X 1 , Y 1 ) , d = ( X 2 , Y 2 ) a=(X_1,Y_1),d=(X_2,Y_2) a=(X1,Y1),d=(X2,Y2)

那么 X 1 Y 1 − X 2 Y 1 = X 1 Y 2 − X 2 Y 2 X_1Y_1-X_2Y_1=X_1Y_2-X_2Y_2 X1Y1X2Y1=X1Y2X2Y2

所以 ( X 2 − X 1 ) ( Y 2 − Y 1 ) ≡ 0 ( m o d p ) (X_2-X_1)(Y_2-Y_1) \equiv 0 \pmod p (X2X1)(Y2Y1)0(modp)

那么 如果 p p p 是一个质数 则 p p p 和左式一定没有公因数

因此上式不可能成立

所以 p p p 是质数时 则有以上构造

那么因为要满足截取 n = 500 n=500 n=500

所以当 p p p 取23<25(题目要求的上限)

可以构造出所有解

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值