#include <bits/stdc++.h>
using namespace std;
const int M = 100;
int n;
bool a[M][M];
void que()
{
cout<<"?"<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
cout<<a[i][j];
cout<<endl;
}
for (int i=0;i<n;i++)
for (int j=0;j<n;j++)
a[i][j]=0;
}
int main()
{
int x;
cin>>n;
bool ans[n][n]={};
for (int i=0;i<n;i++)
{
a[i][0]=a[i][1]=1;
que();
cin>>x;
if (x==n)
{
ans[i][0]=1;
continue;
}
if (x!=2*n)
{
a[i][1]=a[i][2]=1;
que();
cin>>x;
if (x==2*n)
{
ans[i][0]=1;
continue;
}
else if(x==n)
{
ans[i][1]=1;
continue;
}
a[i][0]=a[i][1]=a[i][2]=1;
que();
cin>>x;
if (x==2*n-1)
ans[i][0]=1;
else
ans[i][1]=1;
continue;
}
int s=2,e=n+1;
while (s+1<e)
{
int mid=(s+e)/2;
for (int j=1;j<n;j++)
a[i][j]=(j<mid);
que();
int x;
cin>>x;
if (x%n)
e=mid;
else
s=mid;
}
if (s==n)
{
cout<<"!"<<endl;
for (int j=0;j<n;j++)
{
string ss(n,'0'),s1(n,'1');
if (j==i)
cout<<s1<<endl;
else
cout<<ss<<endl;
}
return 0;
}
ans[i][s]=1;
}
cout<<"!"<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
cout<<ans[i][j];
cout<<endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |