零分求调
#include<bits/stdc++.h>
using namespace std;
string s,sl;
int a[100000],er[8][1000000];
int main (){
/*int n;
cin>>n;
for(int i=0;i<n;i++){
int m;
cin>>m;
cin>>s;
for(int j=0;j<s.size();j++){
if(s[j]>='A'&&s[j]<='Z'){
a[j]=s[j]-'A'+10;
}else{
a[j]=s[j]-'0';
}
}
long long ans=0;
int l=0;
for(int j=s.size()-1;j>=0;j--){
ans+=a[j]*pow(m,l);
l++;
}
cout<<ans<<endl;
}*/
long long n,o=0;
cin>>n;
while(1){
a[o]=n%2;
o++;
n/=2;
if(n==0){
break;
}
}
// for(int i=o-1;i>=0;i--){
// cout<<a[i];
// }
// cout<<endl;
int q=(o+7)/8;
o++;
for(int j=0;j<q;j++){
int p=1;
for(int i=o;i>o-8;i--){
er[p][j]=a[i];
p++;
}
if(o>=8){
er[0][j]=1;
o-=8;
}else{
for(int i=0;i<8;i++){
int ls;
ls=a[i+1];
a[i+1]=a[i];
a[i]=0;
}
er[0][j]=0;
}
}
for(int j=0;j<q;j++){
for(int i=0;i<8;i++){
cout<<er[i][j];
}
cout<<endl;
}
for(int i=0;i<q;i++){
string sl="";
int ans=0;
for(int j=0;j<8;j++){
ans+=er[j][i]*pow(j,2);
}
int e=0;
while(1){
if(ans%16>=10){
sl[e]=ans%16-10+'A';
}else{
sl[e]=ans%16+'0';
}
e++;
ans/=16;
if(ans==0){
break;
}
}
for(int j=e-1;j>=0;j--){
cout<<sl[j]<<" ";
}
}
}