l


私信TA

用户名:133288

访问量:449

签 名:

等  级
排  名 4950
经  验 1615
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 z
专  业

  自我简介:

TA的其他文章

优秀的拆分
浏览:374

解题思路:

1.奇数不存在优秀的拆分,因为2的正整数次方都是偶数,偶数+偶数=偶数

2.题目求一个数拆成2的正整数次方相加,使用位运算可以很简便的完成

注意事项:


1.<<是左移,左移一位相当于*2,左移两位相当于*4,以此类推

2.>>是右移,右移一位相当于/2,右移两位相当于/4,以此类推

3.&是按位与,&1相当于%2

4.10的7次方是一千万,小于2的24次方

参考代码:

#include<cstdio>
main() {
	int n,k;
	scanf("%d",&n);
	if (n & 1)return !puts("-1");
	for (int i = 24; i > 0; --i)if ((n >> i) & 1)printf("%d ", 1 << i);
	return 0;
}
 

0.0分

6 人评分

  评论区

  • «
  • »