您的位置:首页 > 其它

整数分解为2的幂

2018-02-15 21:53 127 查看
任何正整数都能分解成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
Input
输入一个数N(1 <= N <= 10^6)
Output
输出划分方法的数量Mod 1000000007
Input示例
7
Output示例
6
#include <iostream>
using namespace std;

const int MOD = 1e9 + 7;
const int MAXN = 1e6 + 5;
int cnt[MAXN];

int main()
{
int n;
cin >> n;
cnt[0] = 1;
for (int i = 1; i <= n; i++)
{
if (i & 1)
{
cnt[i] = cnt[i - 1];
}
else
{
cnt[i] = (cnt[i - 1] + cnt[i / 2]) % MOD;
}
}
cout << cnt
<< endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: