题解 2548: [CSP-J2020] 优秀的拆分

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

优质题解

优秀的拆分

摘要:解题思路:    如果输入的数为奇数,我们发现肯定不是一个优秀的拆分,因为后面一系列的偶数后肯定要加上1;所以要找偶数和:pow(2,0)=1pow(2,1)=2pow(2,2)=4pow(2,3)=……

优秀的拆分

摘要:解题思路:1.奇数不存在优秀的拆分,因为2的正整数次方都是偶数,偶数+偶数=偶数2.题目求一个数拆成2的正整数次方相加,使用位运算可以很简便的完成注意事项:1.<<是左移,左移一位相当于*2,左移两位……
优质题解

[CSP-J2020] 优秀的拆分(递归)

摘要:解题思路:注意两件事,一个是奇数不存在优秀的拆分,因为2的正整数次方都是偶数,偶数+偶数=偶数另一个是拆分出的数要用 2 的正整数次幂表达,当它本身就是2 的正整数次幂的时候就可以打印自己了这里采用p……

天才的写法

摘要:解题思路:拆分为不同的2的幂次数,可以先算出来比n小的2的所有幂次,在进行取数操作注意事项:参考代码:n = int(input())i = 1a = []b = []while 2**i <= n:……

[CSP-J2020] 优秀的拆分--DFS+剪枝

#题解没有搜索解法所以写了个######其实根本没必要,老老实实位运算不香嘛####tip-1:1当前凑的数已经大于了n,没必要再继续下去if(sum==n)//凑出了n,从大到小输出选择的数,因为选数从大的开始选,直接正序输出{for(inti=0;i

利用二进制编码解答

###二进制编码规则解答#include#include#include#includeusingnamespacestd;intmain(){intn;cin>>n;vectorarr;if(n&1){cout=0;--i){cout

2548:优秀的拆分

解题思路:利用二进制注意事项:参考代码:n=int(input())a=list(str(bin(n)))#二进制a=a[2:]#去掉0ba.reverse()z=[]ifint(a[0])==1:print('-1')else:foriinrange(len(a)):ifint(a[