这道题也不难,只需要理解如何判断主对角线和副对角线即可。找规律可以推出来。
主对角线
题目中的黄色方格都有一个共同的特点,就是 行号和列号相等。
副对角线
副对角线是蓝色方格,特点是 行号加列号等于边长加一。这道题的边长就是 \(n\)。
我们还要算一下编号为 \(m\) 的格子在第几行第几列。
行号可以用 ceil(1.0*m/n) 来计算。列号就是 m%n。需要注意的是,如果算出来的列号是 \(0\),那么应改为 \(n\)。
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;
}
浙公网安备 33010602011771号