30求助,其余全WA
  • 板块P5461 赦免战俘
  • 楼主Ljh421
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/6/13 22:17
  • 上次更新2025/6/14 17:44:02
查看原帖
30求助,其余全WA
972511
Ljh421楼主2025/6/13 22:17

题解里没见过这种方法,希望大佬帮忙看看哪里有问题。

#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;
}
2025/6/13 22:17
加载中...