蓝桥杯 2的次幂表示

递归,注意2^1的时候,以及如果当前的num==0了 就不再需要后面有+号

#include<bits/stdc++.h>
using namespace std;
int n;
void solve(int num){
	int i ;
	if(num==0) printf("0");
	while(num > 0){
		for(i=0;;i++){			//找出临近的次幂 
			if( (1<<i) > num) {
				i--;
				break;
			}
		}
		printf("2");
		num-=(1<<i); 
		if(i!=1) {								//1次幂不需要递归 
			printf("(");
			solve(i);
			printf(")");
		} 
		if(num!=0)
			printf("+");
	}
}
int main(){
	scanf("%d",&n);
	solve(n);
} 
发布了10 篇原创文章 · 获赞 1 · 访问量 173

猜你喜欢

转载自blog.csdn.net/weixin_43626356/article/details/105109483
今日推荐