80分求助(悬赏关注)
查看原帖
80分求助(悬赏关注)
775551
caojiaming楼主2023/11/14 21:28
#include <bits/stdc++.h>
using namespace std;
int n;
string a;
int mpow(int p)
{
	if(p==0) return(1);
	if(p==1) return(2);
	if(p%2) return(mpow(p-1)*2);
	int temp=mpow(p/2);
	return(temp*temp);
}
vector<int> liebiao;
void init(int yu)
{
	if(yu==0) return;
	if(yu==1){
		liebiao.push_back(0);
		return;
	}
	int Y=log2(yu);
	liebiao.push_back(Y);
	yu-=mpow(Y);
	init(yu);
}
string str[20]={"0","2(0)","2",
				"2+2(0)","2(2)","2(2)+2(0)",
				"2(2)+2","2(2)+2+2(0)","2(2+2(0))",
				"2(2+2(0))+2(0)","2(2+2(0))+2",
				"2(2+2(0))+2+2(0)","2(2+2(0))+2(2)",
				"2(2+2(0))+2(2)+2(0)","2(2+2(0))+2(2)+2",
				"2(2+2(0))+2(2)+2+2(0)"},Str;
int main()
{
    cin>>n;
    init(n);
//    for(int i=0;i<liebiao.size();i++) cout<<liebiao[i]<<" ";
    for(int i=0;i<liebiao.size()-1;i++)
    {
    	Str+="2("+str[liebiao[i]]+")+";
	}
	Str+="2("+str[liebiao[liebiao.size()-1]]+")";
	cout<<Str;
    return(0);
}
2023/11/14 21:28
加载中...