题解 | #2的幂次方#

2的幂次方

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

递归很强大。

#include <cstdio>
#include <iostream>

using namespace std;

void Int2Str(int x, string &s){
	if(x == 0 || x == 2){
		s.push_back('0'+x);
		return;
	}
	int index = 0;
	int tag = 0;//本子域输出过,需要输出加号 的标记 
	while(x){
		if(x%2){
			if(tag){
				s.push_back('+');
			}
			tag = 1;
			if(index != 1){
				s.push_back(')');
				Int2Str(index, s);
				s.push_back('(');
			}
			s.push_back('2');
		}
		x /= 2;
		index++;
	}
}

int main(){
	string s;
	int x;
	while(scanf("%d",&x) != EOF){
		Int2Str(x, s);
		for(int i=s.size()-1; i>=0; i--){
			printf("%c",s[i]);
		}
		printf("\n");
		s.clear();
	}
	return 0;
}
全部评论

相关推荐

oppo 应用软开 22*15+0.5*12
拿到了ssp完美:真的坎坷,但是你至少拿到这么多offer了!
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务