欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷P1010 [NOIP1998 普及组] 幂次方进阶解法

程序员文章站 2022-05-08 22:52:26
...
#include<iostream>
#include<string>
#include<cmath>

using namespace std;
int n;

string trans(int n)
{
	string s;
	int m = n;
	for (; m != 0;)
	{
		int i;
		for (i = 0; pow(2, i) <= m; i++) {}
		if (1 == i)
			s += "+2(0)";
		else if (2 == i)
			s += "+2";
		else
			s += "+2(" + trans(i - 1) + ")";
		m -= pow(2, i - 1);
	}
	return s.substr(1);
}

int main()
{
	cin >> n;
	cout << trans(n);
	return 0;
}