0
已解决
徐子宸
中级天翼
中级天翼
4976 喵阵
经验值:1600 时间限制:1000毫秒
题目描述 Description
喵阵如下:
A_0= \begin{pmatrix} 1 \end{pmatrix}A0=(1)
A_1= \begin{pmatrix} 1 & 1 \\ 1 & 0 \end{pmatrix}A1=(1110)
A_2= \begin{pmatrix} 1 & 1 & 1 & 1\\ 1 & 0 & 1 & 0\\ 1 & 1 & 0 & 0\\ 1 & 0 & 0 & 1 \end{pmatrix}A2=⎝⎜⎜⎛1111101011001001⎠⎟⎟⎞
可见,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
来自酷町**提示:把每一个矩阵分成四个的小矩阵来看。
#include<bits/stdc++.h>
#pragma GCC optimize(3)
using namespace std;
bool find(int k,int x,int y){
if(k==0)return 1;
if(x>=(int)(pow(2,k-1))&&y>=(int)(pow(2,k-1))){
return !find(k-1,x%(int)(pow(2,k-1)),y%(int)(pow(2,k-1)));
}
else return find(k-1,x%(int)(pow(2,k-1)),y%(int)(pow(2,k-1)));
}
int main(){
int k,x,y;
cin>>k>>x>>y;
cout<<find(k,x,y);
return 0;
}
60分代码,哪错了?
解出者必有重赏
0
已采纳
李博然
资深守护
资深守护
int f(int k,int x,int y)
{
if(k==0) return 1;
int mid=1<<(k-1);
if(x<=mid&&y<=mid) return f(k-1,x,y);
if(x<=mid&&y>mid) return f(k-1,x,y-mid);
if(x>mid&&y<=mid) return f(k-1,x-mid,y);
return 1-f(k-1,x-mid,y-mid);
}
核心
望采纳
0
0
0