题解 | #2的幂次方#

2的幂次方

http://www.nowcoder.com/practice/7cf7b0706d7e4b439481f53e5fdac6e7

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;

string f(int n) {
	string res = "";
	vector<int>v;
	while (n != 0) {
		int t = n % 2;
		v.push_back(t);
		n /= 2;
	}
	reverse(v.begin(), v.end());
	for (int i = 0; i < v.size(); i++) {
		if (v[i] == 0)continue;
		if (i == v.size() - 1) {
			if (res.size() != 0)res += "+";
			res += "2(0)";
		}
		else if(i==v.size()-2){
			if (res.size() != 0)res += "+";
			res += "2";
		}
		else if (i == v.size() - 3) {
			if (res.size() != 0)res += "+";
			res += "2(2)";
		}
		else {
			res += "2(";
			res += f(v.size()-1-i);
			res += ")";
		}
	}
	while (res.find(")2") != res.npos) {
		int pos = res.find(")2");
		res.insert(pos + 1, "+");
	}
	return res;
}
int main() {
	
	int n;
	while (cin >> n) {
		cout << f(n) << endl;
	}


	
	return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
榕城小榕树:你是我见过最幸福的牛客男孩
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 12:10
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务