蓝桥杯 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);
} 
发布了9 篇原创文章 · 获赞 1 · 访问量 126
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览