洛谷原题

这道题也不难,只需要理解如何判断主对角线和副对角线即可。找规律可以推出来。

主对角线

题目中的黄色方格都有一个共同的特点,就是 行号和列号相等

副对角线

副对角线是蓝色方格,特点是 行号加列号等于边长加一。这道题的边长就是 \(n\)

我们还要算一下编号为 \(m\) 的格子在第几行第几列。

行号可以用 ceil(1.0*m/n) 来计算。列号就是 m%n。需要注意的是,如果算出来的列号是 \(0\),那么应改为 \(n\)

AC 记录

AC 代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    scanf("%d %d",&n,&m);
    int x=ceil(1.0*m/n),y=m%n;//行号和列号
    if(m%n==0) y=n;
    if(x==y) printf("yes ");
    else printf("no ");
    if(x+y==n+1) printf("yes");
    else printf("no ");
    return 0;
}
posted on 2026-06-29 21:47  lz5332t  阅读(3)  评论(0)    收藏  举报