51nod 1383 整数分解为2的幂【递推】
2017-10-24 07:55
344 查看
Description
任何正整数都能分解成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
题解
定义f[i]表示i的方案数,可以知道,每个数要么是从前一个数所有数都乘二转移来,要么就是从前一个数加一转移来,所以f[i]=f[i−1]+f[i/2]∗(!(i&1))代码
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define maxn 1000006 #define tt 1000000007 using namespace std; int n,f[maxn]; int main(){ freopen("power.in","r",stdin); freopen("power.out","w",stdout); scanf("%d",&n); f[0]=1; for(int i=0;i<=log2(n);i++) for(int j=1<<i;j<=n;j++)(f[j]+=f[j-(1<<i)])%=tt; printf("%d\n",f ); return 0; }
相关文章推荐
- 【51NOD 1048】【51NOD 1383】整数分解为2的幂 V2
- 51nod 1383 整数分解为2的幂(递推)
- 51nod 1383 整数分解为2的幂
- 51nod 1383 整数分解为2的幂
- [51Nod 1048] 整数分解为2的幂 V2
- 51nod 1383&1048 整数分解为2的幂 [递推]【数学】
- 51Nod 1048 1383 整数分解为2的幂
- 51nod-1383 整数分解为2的幂
- 51nod 1383 整数分解为2的幂
- 【51Nod 1383】整数分解为2的幂
- 51Nod 1048 整数分解为2的幂 V2
- 【51NOD 1383】整数分解为2的幂
- [51Nod 1383] 整数分解为2的幂
- 51Nod-1383-整数分解为2的幂
- 1383 整数分解为2的幂
- [DP] 51Nod1048 整数分解为2的幂 V2
- 1383 整数分解为2的幂 找规律。
- 整数分解为2的幂-清华复试上机题
- [递推] 51Nod1383 整数分解为2的幂
- HDU-4477滚动数组+递推(整数分解)