B. Sumsets S

内存限制:256 MiB 时间限制:1000 ms 输入文件: sum.in 输出文件: sum.out
题目类型:传统 评测方式:文本比较

题目描述

给出一个整数 N ,将 N 分解为若干个 2 的次幂的和,共有多少种方法?

输入格式

输入一个整数 N 1 \leq N \leq 10^6 )。

输出格式

输出方案数对 10^9 取模的结果。

样例

样例输入 #1

7

样例输出 #1

6

所有合法方案如下:

  • 1+1+1+1+1+1+1
  • 1+1+1+1+1+2
  • 1+1+1+2+2
  • 1+1+1+4
  • 1+2+2+2
  • 1+2+4

数据范围与提示

30 % 数据: 1<=N<=100

100 % 数据: 1<=N<=10^6

输入文件名为:sum.in

输出文件名为:sum.out