20求助(溢出了?)
查看原帖
20求助(溢出了?)
638141
Literally楼主2024/10/15 17:46

rt

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,t,k,cnt,sum;
string dfs(int n){
	//cout<<endl;
	if(n==2) return "2";
	if(n==0) return "0";
	int a[100];
	string s;
	t=n,k=32768,cnt=0,sum=15;
	while(t>0){
		while(t<k){
			k=k/2;
			sum--;
		}
		a[++cnt]=sum;
		t-=k;
	}
	//cout<<"n:"<<n<<' ';
	for(int i=1;i<=cnt;i++){
		//cout<<a[i]<<' ';
		if(a[i]==1){
			s+="2";
		}else{
			s+="2(";
			s+=dfs(a[i]);
			s+=")";
		}
		if(i<cnt) s+="+";
	}
	return s;
}
signed main(){
	cin>>n;
	cout<<dfs(n);
	return 0;
}

输入8会直接寄

2024/10/15 17:46
加载中...