题解里没见过这种方法,希望大佬帮忙看看哪里有问题。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,now=1;
int ksm(int a,int b){
int ans=1;
while(b>0){
if(b%2==1){
ans=ans*a;
}
a=a*a;
b=b/2;
}
return ans;
}
void mian(int a){
for(int i=ksm(2,n);i>=1;i--){
if(a>=ksm(2,i-1)){
cout<<"1 ";
a-=ksm(2,i-1);
}else{
cout<<"0 ";
}
}
return;
}
signed main(){
cin>>n;
for(int i=1;i<=pow(2,n);i++){
if(i%4==1){
mian(now);
}else if(i%4==2){
mian(3*now);
}else if(i%4==3){
mian(5*now);
}else if(!(i%4)){
mian(15*now);
now=now*15+2;
}
puts("");
}
return 0;
}