警示后人
查看原帖
警示后人
748816
zhuweichen12楼主2024/7/29 14:59

千万别信最后的n≤10^7。本蒟蒻开始时相信了,结果RE了四个点。最后下样例才发现第17个点n =9999998


https://www.luogu.com.cn/record/169248391

#include <bits/stdc++.h>
using namespace std;
int a[25]={0,2};
bool vis[25];
int n;
void cf(){
	for(int i=1;a[i]<=n;i++){
		if(a[i+1]>n&&vis[i]==0){
			cout<<a[i]<<" ";
			n-=a[i];
			vis[i]=1;
		}
	}
}
int main(){
	memset(vis,0,sizeof vis);
	cin>>n;
	if(n%2==1){
		cout<<-1;
		return 0;
	}
	for(int i=2;i<=21;i++){
		a[i]=a[i-1]*2;
	}
	while(n){
		cf();
	}
	return 0;
}

笑死直接被硬控半小时

2024/7/29 14:59
加载中...