CF1734E 题解
题意简述
给出质数
题目分析
欢迎来到思维难度
首先分析一下条件:
-
第一个条件比较好实现,只要我们构造出的矩阵在模
意义下仍满足第三个条件即可。 -
第二个条件看似奇怪,似乎不容易构造出既满足第三个条件又满足第二个条件的矩阵,但是我们发现有这样一个性质:
( 是任意常数)。这意味着如果我们构造出了任意一个满足第三个条件的矩阵,我们只需要对每行各指定一个常数
,让该行所有元素都加上这个常数就可以满足第二个条件。 -
第三个条件就是本题的重点了。我们对其进行一个转换得到:
也就是说,矩阵的每两行对应位置的两个元素之差皆不相等。这样我们不妨令第
行的相邻元素之差都为 ,第 行的相邻元素之差都为 ……第 行的相邻元素之差都为 ,第 行的相邻元素之差都为 。一个例子就是 ,即:这个矩阵就满足第三个条件。
现在我们分析完了三个条件,只需要看一下刚刚构造的满足第三个条件的矩阵是否可以转变成满足前两个条件的形式即可。
首先这个矩阵是满足第一个条件的。这是因为
为了满足第二个条件,我们让第
本题至此就解决了,代码十分简单(字面意思)。
代码实现
#include<bits/stdc++.h> using namespace std; int n,a[360]; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;printf("\n"),i++) for(int j=1;j<=n;j++) printf("%d ",((i*j+a[i]-i*i)%n+n)%n);//原始值是 i*j,为了满足第二个条件加上a[i]-i*i,为了满足第一个条件对 n 取模 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端