建议加强数据。
查看原帖
建议加强数据。
519113
SeccHtigy590楼主2023/9/30 14:36
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n;
int mi[15]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384};
char ans[20010];
int idx;
void f(int n){
	if(n==0||n==1||n==2)return;
	int l=14;
	while(n>0){
		if(n>=mi[l]){
			ans[++idx]='2';ans[++idx]='(';
			n-=mi[l];
			if(l==0){
				ans[++idx]='0';				
			}else if(l==1){
				idx--;				
			}else if(l==2){
				ans[++idx]='2';				
			}
			f(l);
			if(l!=1)ans[++idx]=')';
			if(n>0)ans[++idx]='+';					
		}l--;
	}
}
int main(){
	cin>>n;	
	-> if(n==1){cout<<"2(0)";return 0;}
	-> if(n==2){cout<<"2";return 0;}	
	f(n);
	for(int i=1;i<=idx;i++)cout<<ans[i];
	return 0;
}

这段代码删去箭头指向的两行也能AC。但是输入1和2没有输出。

2023/9/30 14:36
加载中...