RE+MLE(站外题)
查看原帖
RE+MLE(站外题)
1328469
glass_goldfish楼主2024/6/22 15:29
#include<bits/stdc++.h>
using namespace std;
int n;
long long a[17];
int work(int x)
{
	bool s=1;
	if(x==0){
		cout<<"0";
		return 0;
	}
	if(x==2){
		cout<<"2";
		return 0;
	}
	while(s){
		int i;
		for(i=16;a[i]>x;i--);
		if(a[i]!=2){
			cout<<"2(";
			work(i);
			cout<<")";
		}
		else cout<<"2";
		if(x-a[i])cout<<"+",x=x-a[i];
		else s=0;
	}
}
int main()
{
	a[0]=1;for(int i=1;i<=16;++i)a[i]=a[i-1]*2;
	cin>>n;
	work(n);
	return 0;
}
1208:2的幂次方表示

时间限制: 1000 ms         内存限制: 65536 KB
提交数:15543    通过数: 11553
【题目描述】
任何一个正整数都可以用2的幂次方表示。例如:

137=27+23+20137=27+23+20
同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:

2(7)+2(3)+2(0)

进一步:7=22+2+207=22+2+20(2121用22表示)

3=2+203=2+20
所以最后137可表示为:

2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:

1315=210+28+25+2+11315=210+28+25+2+1
所以1315最后可表示为:

2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)

【输入】
一个正整数n(n≤20000)。

【输出】
一行,符合约定的n的0,2表示(在表示中不能有空格)。

【输入样例】
137
【输出样例】
2(2(2)+2+2(0))+2(2+2(0))+2(0)
2024/6/22 15:29
加载中...