题目描述
一开始,你只有一个数字𝑠s,𝑠s 只可能为 00 或 11。接下来,你需要将这个数字扩张 𝑛n 轮,最后变成一个 2𝑛×2𝑛2n×2n 的矩阵,每轮的扩张规则如下:
- 原矩阵中的每个 00 将变成 00010001
- 原矩阵中的每个 11 将变成 11101110
输入格式
- 两个整数分别表示 𝑛n 与 𝑠s
输出格式
- 2𝑛×2𝑛2n×2n 的矩阵表示答案,中间不含空格
数据范围
- 𝑠=0s=0 或 11
- 0≤𝑛≤110≤n≤11
样例数据
输入:
2 0
输出:
0000
0101
0011
0110
详见代码:
#include <bits/stdc++.h>
using namespace std;
int n;
int s;
int a[15][5005][5005];
int main()
{
cin>>n;
cin>>s;
a[0][1][1]=s;
for (int i=1;i<=n;i++)
{
int t=(1<<(i-1));
for (int j=1;j<=t;j++)
{
for (int k=1;k<=t;k++)
{
if (a[i-1][j][k]==0)
{
a[i][j*2][k*2]=1;
}
else
{
a[i][j*2][k*2-1]=1;
a[i][j*2-1][k*2]=1;
a[i][j*2-1][k*2-1]=1;
}
}
}
}
for (int i=1;i<=(1<<n);i++)
{
for (int j=1;j<=(1<<n);j++)
{
cout<<a[n][i][j];
}
cout<<endl;
}
return 0;
}