蓝桥杯 - 2的次幂表示 (递归)

题目传送:蓝桥杯 - 2的次幂表示

思路:这递归递的我头都晕了,先贴个伪递归吧

AC代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

void fun1(int a) {		//输出2的a次方,因为题目最大就20000,2的15次方足以
	if(a == 0) printf("2(0)");
	else if(a == 1) printf("2");
	else if(a == 2) printf("2(2)");
	else if(a == 3) printf("2(2+2(0))");
	else if(a == 4) printf("2(2(2))");
	else if(a == 5) printf("2(2(2)+2(0))");
	else if(a == 6) printf("2(2(2)+2)");
	else if(a == 7) printf("2(2(2)+2+2(0))");
	else if(a == 8) printf("2(2(2+2(0)))");
	else if(a == 9) printf("2(2(2+2(0))+2(0))");
	else if(a == 10) printf("2(2(2+2(0))+2)");
	else if(a == 11) printf("2(2(2+2(0))+2+2(0))");
	else if(a == 12) printf("2(2(2+2(0))+2(2))");
	else if(a == 13) printf("2(2(2+2(0))+2(2)+2(0))");
	else if(a == 14) printf("2(2(2+2(0))+2(2)+2)");
	else if(a == 15) printf("2(2(2+2(0))+2(2)+2+2(0))");
}

void fun2(int a, int cur) {
	if(a == 0) return;
	int t = a % 2;
	int tmp = a / 2;
	fun2(tmp, cur + 1);
	if(t == 1) {
		if(tmp != 0) printf("+");
		fun1(cur);
	}
}

int main() {
	int n;
	while(scanf("%d", &n) != EOF) {
		fun2(n, 0);
		printf("\n");
	}
	return 0;
}
时间: 2024-11-06 07:23:53

蓝桥杯 - 2的次幂表示 (递归)的相关文章

ALGO-139_蓝桥杯_算法训练_s01串(递归)

问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据规模和约定 0~19 记: 题目给出的信息带有误导性,让人看不出规律(1应该是"1"才对) 具体的要求是通过看测试数据的结果得到的(lll¬ω¬) 即:n的字符串 = (n-1的字符串) + (n-2的字符串) AC代码: 1 #include <stdio.h> 2 #define MAX

蓝桥杯练习系统题解

转于:http://www.cnblogs.com/cshhr/p/3550014.html 蓝桥杯官网练习系统题解(非VIP) BEGIN-4(Fibonacci数列) 有递推公式,大家都知道用递推公式求,仅仅要记得在递推的时候同一时候取模求好 这里给一份另类代码,用矩阵高速幂求,事实上还有循环节 /* (1 1) * (Fn-1) = ( Fn )//矩阵相乘,将就着看吧 (1 0) (Fn-2) (Fn-1) (1 1) * (1 1) * (Fn-2) = ( Fn ) (1 0) (1

2015年蓝桥杯省赛B组C/C++(试题+答案)

首先说,这次我是第二次参加蓝桥杯(大学里最后一次),可这次去连个三等都没拿到,有些心灰意冷,比上一次还差, 当时看到成绩出来的时候有些失落,但是跌倒了,再站起来继续跑就可以了.可能是状态不好吧,纯属自我安慰. 接下来我把今年的题目又重新做了一遍,写下了这篇博客,如果也有需要探讨答案的,希望可以有帮助. 第一题: 第1题:统计不含4的数字 题目大意 统计10000至99999中,不包含4的数值个数. 解题分析: 第一种解法: 数学方法,这种是在网上看到的一种解法: 最高位除了0.4不能使用,其余8

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告

2016 第七届蓝桥杯 c/c++ B组省赛真题及解题报告 勘误1:第6题第4个 if最后一个条件粗心写错了,答案应为1580. 条件应为abs(a[3]-a[7])!=1,宝宝心理苦啊.!感谢zzh童鞋的提醒. 勘误2:第7题在推断连通的时候条件写错了,后两个if条件中是应该是<=12 落了一个等于号.正确答案应为116. 1.煤球数目 有一堆煤球.堆成三角棱锥形.详细: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形). -. 假设一共

【蓝桥杯】ComputerTransformation

初始时刻,只有一个"1"组成的字符串被存储到计算机中.在以后的每一个时刻,计算机会将当前字符串中的每一个"0"变为"10",每一个"1"变为"01".例如,在第一个时刻,字符串将变为"01",在第二个时刻,字符串将变为"1001",在第三个时刻,字符串将变为"01101001". 你的任务是,求出在第n个时刻,字符串中有多少个连续的0对.例如,在第

第三届蓝桥杯 c/c++真题

第三届蓝桥杯真题 c/c++ 以下题目我自己也并不是所有的题目都是一次性就能做对或是有结题思路的.有些题目也是经过查证网上相关的资料或是参考了别人的代码和解题思路才做出来的.总的来看,这份题目考了很多循环的只是,还有模拟,动态规划的只是. 其中做题过程中,也有了一些新的体会.起初做代码填空题的时候我没办法知道自己做的是对还是错,就跑到网上查答案,后来发现,题目已经给出了代码,起始我们可以自己加上头文件,然后把空缺的代码加上进行调试的,这样就可以验证自己补充的代码是否正确了. 此外在进行调试的时候

李白打酒(蓝桥杯2014)

    李白打酒(蓝桥杯2014) 1.题目描述: 话说大诗人李白,一生好饮.幸好他从不开车. 一天,他提着酒壶,从家里出来,酒壶中有酒2斗.他边走边唱: 无事街上走,提壶去打酒. 逢店加一倍,遇花喝一斗. 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了. 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b.则:babaabbabbabbbb 就是合理的次序.像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的). 2. #inclu

第六届蓝桥杯本科B组C++省赛题解

比赛结束已经一星期了,成绩也出来了,江苏非211组的省前十,但是深感自己还是有太多的不足.绝对不能以自己还只是大一为借口,acm这条路还长的很. 目测得了95分(满分150),第一题错了,代码填空第一题错了,倒数第二题扣了一点分,最后一道大题全错. 之所以会这么晚来发这道题解,是因为深感自己不足,倒数第二题之所以没有做出来,是因为自己居然不会用[矩阵快速幂].因此,现学现用以自省. 关于题目:所有填空题都可以纯暴力,只要会回溯剪枝法对于蓝桥杯已经足够了.大题目难度一年比一年高 第一题 结果填空

2015 蓝桥杯:3.三羊献瑞

*/--> pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} pre.src {background-color: Black; color: White;} 2015 蓝桥杯:3.三羊献瑞 祥 瑞 生 辉 + 三 羊 献 瑞 ------------ 三 羊 生 瑞 气 1234 + 5672 ------ 56328 ==> 9567 + 108