问题标题: 酷町堂:4976 喵阵 我分治学蒙了

0
0
已解决
王子健
王子健
初级天翼
初级天翼

4976   喵阵        经验值:800

题目描述 Description

喵阵如下:

这个

可见,A_kAk​是一个2^k * 2^k2k∗2k 的矩阵。

现在告诉你kk的值,求第xx行第yy列的数字。

输入描述 Input Description

输入有一行,三个数,分别是k(1≤k≤30),x,y(1≤x,y≤2^k)。

输出描述 Output Description

输出有一个数,数值为0或1,表示第x行第y列的数字。

样例输入 Sample Input

2 2 2

样例输出 Sample Output

0

数据范围及提示 Data Size & Hint

来自酷町喵的提示:把每一个矩阵分成四个的小矩阵来看。

 

看到输出为0或1时我笑了,直接输出1得60分,题目硬是没看懂,望求解,50豆

#include <iostream>
#include <cstdio>
using namespace std;
int k, x, y; 
int main() {
	cin >> k >> x >> y;
	cout << 1;
	return 0;
}
我笑了

 

王子健在2020-11-07 08:49:13追加了内容


3
已采纳
张睿杰
张睿杰
高级守护
高级守护

这个首先难的地方是构图,不知道你构图会不会,我先跟你说说怎么分析这道题

首先下面有提示把每一个矩阵分成四个的小矩阵来看。

然后我们按照这个提示切割这个矩阵

,发现这没有什么规律,这时候我们对比第一个

,会发现原来的1下面和右边变成了1,而右下角变成了0

再看第三个发现不管是0还是1都是遵循一个规律

此数的右边和下边都和本数一样,而右下角则是相反的数

那么我们可以发现,矩阵里面的每一个数字都是由最开始的第二幅图当中的4个数字变化而来的

所以我们可以进行逆推,把当前的横下标+1然后除以二,纵坐标+1然后除以二,一直到横坐标纵坐标皆<=2结束

如果你有什么不懂得,可以加我的qq,3495649051,我可以再给你进行详细的解答

0
我要回答