整数分解成2的幂的和
来源:互联网 发布:约瑟芬皇后知乎 编辑:程序博客网 时间:2024/06/03 17:31
这是一道华为机试的初级题,代码很短,但第一次做时怎么也想不明白解法,最后还是用神递归解决了。
问题:
任何数都能分解成2的幂,比如
7=1+1+1+1+1+1+1
=1+1+1+1+1+2
=1+1+1+2+2
=1+2+2+2
=1+1+1+4
=1+2+4
共有6种分解方式,设f(n)为任意正整数可能分解总数,比如f(7)=6
写个算法,输入数,求出其分解的总数。
思路: 当n 为奇数时,拆分情况和n-1相同。
当为偶数时,我们考虑有1和没有1的拆分。
若有1,则前2项均为1,就和n-2的拆分一样了,但递归时只能写n-1,原因自己理解。
若没有1,则将每项除以2,就和n/2的拆分一样了。
#include<stdio.h>int sp(int n){ if(n==1) return 1; if(n%2!=0) return sp(n-1); else return (sp(n-1)+sp(n/2));}int main(){ int n; scanf("%d",&n); printf("%d",sp(n)); return 0;}
1 0
- 整数分解成2的幂的和
- 整数的幂分解
- 整数的素数和分解
- 整数能分解成若干个连续整数的和
- 整数的2的幂分解
- 整数分解为2的幂
- 1383 整数分解为2的幂
- 整数分解为2的幂
- 求一个整数分解成连续数字的和
- 整数的素数和分解问题
- 整数的素数和分解问题
- 整数的素数和分解问题
- 整数的素数和分解问题
- 整数的素数和分解问题
- 整数的素数和分解问题
- 整数的素数和分解问题
- 158 整数的素数和分解问题
- 整数的素数和分解问题
- SpringMVC Redirect 跳转后保存Model中的数据
- SAP应用事务开发—TABLE CONTROL 控件之应用
- socket函数
- static_cast, dynamic_cast, const_cast探讨
- leetcode--Summary Ranges
- 整数分解成2的幂的和
- springMVC @ModelAttribute学习
- select()函数详解
- Chrome on Android的开发调试技术
- mybatis增删改查
- C#设计模式观察者
- struts 交给spring管理
- iOS项目中使用pod
- Mac OS下Item2 SSH远程中文显示乱码