51nod-1383 整数分解为2的幂
来源:互联网 发布:手机数据流量自动关闭 编辑:程序博客网 时间:2024/06/16 14:45
原题链接
1383 整数分解为2的幂![](https://file.51nod.com/images/icon/ok.png)
![](https://file.51nod.com/images/icon/ok.png)
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
![](https://file.51nod.com/images/icon/star.png)
![](https://file.51nod.com/images/icon/plus.png)
任何正整数都能分解成2的幂,给定整数N,求N的此类划分方法的数量!由于方案数量较大,输出Mod 1000000007的结果。
比如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
比如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
Input
输入一个数N(1 <= N <= 10^6)
Output
输出划分方法的数量Mod 1000000007
Input示例
7
Output示例
6
#include <cstdio>#include <cmath>#include <iostream>#include <vector>#include <algorithm>#include <cstring>#include <queue>#define MOD 1000000007#define maxn 1000005using namespace std;typedef long long ll;int dp[maxn][20];int main(){//freopen("in.txt", "r", stdin);int n;scanf("%d", &n);for(int i = 0; i <= 19; i++){ dp[1][i] = 1; dp[0][i] = 1; }for(int i = 2; i <= n; i++){for(int j = 0; (1<<j) <= i; j++){ (dp[i][j] += (ll)dp[i-(1<<j)][j]) %= MOD;;}for(int j = 1; j <= 19; j++) (dp[i][j] += (ll)dp[i][j-1]) %= MOD;}cout << dp[n][19] << endl;return 0;}
0 0
- 51nod-1383 整数分解为2的幂
- 【51Nod 1383】整数分解为2的幂
- 51nod 1383 整数分解为2的幂
- 【51NOD 1383】整数分解为2的幂
- [51Nod 1383] 整数分解为2的幂
- 51nod 1383 整数分解为2的幂
- 51Nod-1383-整数分解为2的幂
- 【51NOD 1048】【51NOD 1383】整数分解为2的幂 V2
- 51nod 整数分解为2的幂
- [51Nod 1048] 整数分解为2的幂 V2
- 51nod 1383&1048 整数分解为2的幂 [递推]【数学】
- 51nod 1383 整数分解为2的幂【递推】
- 51nod 1383 整数分解为2的幂(递推)
- [DP]51 Nod——[1048 整数分解为2的幂 V2]
- 1383 整数分解为2的幂
- 整数分解为2的幂
- 整数分解为2的幂
- 1383 整数分解为2的幂 找规律。
- java web urlrewritefilter(伪静态)配置
- Java编程思想--第三章 操作符
- 写给自己,勿忘初心
- Oracle存储过程学习
- HTML代码规范
- 51nod-1383 整数分解为2的幂
- 【Android 开发问题】ListView 嵌套 GridView导致ListView的item不可点击
- java递归读取目录下的所有文件
- C语言设计1.2代码
- java socket通信03
- 开发小总结常用命令笔记
- 一个简单的内存池
- AudioSpecificConfig
- 英国铸币局将黄金数字化