整数分解为2的幂
来源:互联网 发布:画柜子软件 编辑:程序博客网 时间:2024/06/18 05:06
比如N = 7时,共有6种划分方法。
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
7
6
思路:
如果一个数是一个奇数,那么他是不是等于前一个数字的组成方式,因为他不可能加上一个最小的2了。
我的意思是,奇数减去前面一个数字,是不是代表着1,不够2,也就是说他的等于前一个数字的组成方式。
而一个数字为偶数,是不是代表着他等于前面一个的组成方式,(因为他前者的组成方式,每一种加上一个1,就是他了。)还要加上谁乘以2就等于他的那个数字的组成方式。(如果不懂你可以写几个就知道了,毕竟我也是写了10个,才知道的规律。)
代码如下:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;ll vis[1000005];ll n;int main(){ while(scanf("%lld",&n)!=EOF) { memset(vis,0,sizeof(vis)); vis[0]=1; for(int i=1; i<=n; i++) { if(i&1==1) vis[i] = vis[i-1]; else vis[i] = (vis[i/2]+vis[i-1])%1000000007; } printf("%lld\n",vis[n]%1000000007); } return 0;}
阅读全文
1 0
- 整数分解为2的幂
- 1383 整数分解为2的幂
- 整数分解为2的幂
- 整数分解为2的幂数之和
- 整数分解为2的幂-清华复试上机题
- 51nod 整数分解为2的幂
- 51nod-1383 整数分解为2的幂
- 【51Nod 1383】整数分解为2的幂
- 51nod 1383 整数分解为2的幂
- [51nod1383&1048]整数分解为2的幂
- 【51NOD 1383】整数分解为2的幂
- [51Nod 1383] 整数分解为2的幂
- [51Nod 1048] 整数分解为2的幂 V2
- 51nod 1383 整数分解为2的幂
- 51Nod-1383-整数分解为2的幂
- 整数分解为2的幂(递归)C语言
- [递推] 51Nod1383 整数分解为2的幂
- [DP] 51Nod1048 整数分解为2的幂 V2
- new构造函数和原型链
- Linux 端口号占用 并kill 端口号占用进程
- 设计模式之建造者模式
- java中抽象类与接口中方法访问修饰符问题
- 通过URL来获取网络上的资源下载
- 整数分解为2的幂
- 最小生成树两种算法比较与实现
- Lintcode学习之旅(网上资源借鉴)
- .NET快速信息化系统开发框架 V3.2--Web版本新增“文件管理中心”集上传、下载、文件共享等一身,非常实用的功能
- Linux操作系统的BIOS启动流程
- 网络管理(二)
- Java8源码-Hashtable(2)
- Nginx + keepalived 实现高可用HA 【主从架构】
- 大数乘法