社区讨论

80分求助(悬赏关注)

P1010[NOIP 1998 普及组] 幂次方参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@loydd8vx
此快照首次捕获于
2023/11/14 21:28
2 年前
此快照最后确认于
2023/11/15 07:37
2 年前
查看原帖
CPP
#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);
}

回复

0 条回复,欢迎继续交流。

正在加载回复...