C. Magic Grid(异或矩阵构造+思维)

在这里插入图片描述
这道题是个规律题;我开始读题的时候,很是懵逼,这怎么搞?后来看了大佬的博客,我才知道有这么一个规律:
比如:
在这里插入图片描述
这个是44的矩阵,按着顺序放,可以发现每行没列异或和都为0;
而且题上又说了n是4的倍数;所以可以分块放了;什么意思呢?就是这个意思:
在这里插入图片描述
这样每个4
4异或都为0,那么对应的行或者对应的列合起来异或和为0;这样就够找出来了;那么我只需要从左往右填数字就行了;
AC代码:

#include<bits/stdc++.h>
using namespace std;
int ans[1500][1500];
int val;
void Fill(int x,int y){//填
	 for(int i=x;i<x+4;i++){
	 	  for(int j=y;j<y+4;j++){
	 	  	  ans[i][j]=val++;
		   }
	 }
}
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i+=4){//分块,因为0过了下标就位4了
		  for(int j=0;j<n;j+=4){//同理上面
		  	   Fill(i,j);
		  }
	}
	for(int i=0;i<n;i++)//输出
	for(int j=0;j<n;j++)
	  printf("%d%c",ans[i][j],j==4*n-1?'\n':' ');
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值