zoj 2872 Binary Partitions(简单递推)

原创 2012年03月31日 00:50:07

【题目大意】:把一个数拆成若干个2的幂的和,问有几种拆法。


【解题思路】:递推,当一个数是奇数的时候,没办法,它只能从它前面的那个偶数加个1转移过来。当一个数是偶数的话,可以由它前一个数+1转移过来,也可以是它的一半转移过来,因为偶数换成二进制之后末尾一定是0,也就是偶数左移一位的组合方式。


【代码】:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-8
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long
#define mod 1000000

int f[2001000];

void init(){
    memset(f,0,sizeof(f));
    f[0]=1;
    f[1]=1;
    for (int i=2; i<=2000100; i++){
        if (i%2==0) f[i]=(f[i-1]+f[i/2])%mod;
        else f[i]=f[i-1]%mod;
    }
}

int main() {
    init();
    int T,n;
    cin >> T;
    while (T--){
        scanf("%d",&n);
        cout << f[n] << endl;
    }
    return 0;
}


f[n][k]:至少以2^k的分量去分解n时有多少种分解方案。题目的解即为f[n][0]。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

hdu 5573 Binary Tree【思维+递推】

Binary Tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

URAL 1081 Binary Lexicographic Sequence (递推 + 递归)

大体题意: 定义一个合法的二进制序列为序列中没有两个1是相邻的,对于所有长度为n的合法序列按照字典序排序后(保留前导0),求第K大的串是多少? 思路: 我们先得求出一个n位的合法二进制的个数是多...

UVAlive-6577 Binary Tree(递推+找规律)

传送门:UVA-6577 题意:有一个向下无限延伸的二叉树。有一串只含LRU的指令S,从根结点开始执行。LRU分别表示往左儿子走,往右儿子走,往父节点(如果当前节点为根节点,则跳过这一步)。然后输入...

POJ 2499 Binary Tree 递推 贪心

Binary Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5755   Ac...

ZOJ_2705_Dividing a Chocolate(递推斐波那契)

Dividing a Chocolate Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu...

UVa10276 HDU1329 ZOJ1239 Hanoi Tower Troubles Again!【递推函数+打表】

Hanoi Tower Troubles Again! People stopped moving discs from peg to peg after they know the numbe...

zoj 3929 Deque and Balls 树状数组 递推

从i 到i+1 转移时候ans先倍增,再加上a[ i ] 加到双端队列两端时 对答案的贡献(既新出现的递减项)。然后有减法的时候取模一定要 先加mod再%mod,要不然WA到死 QAQ 点击打开链...
  • Mtrix
  • Mtrix
  • 2016-04-11 19:32
  • 339

ZOJ 3710 Friends【floyd思想递推】

Friends Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice lives in the country where p...

UVA 10328 , ZOJ 3747 (DP 递推)

DP 递推 有一类需要求出在某一序列中连续出现某一种字母或者数字的总个数问题:比如一枚硬币连续抛出n次求出至少连续出现k次正面的种类个数,等。请注意“至少”这个词语,会有很多情况,所以问题并没有我...

zoj 3662 dp (递推k个数 组成的和为n,最小公倍数为m的所有可能)

#include #include #define MOD 1e9+7 int dp[2][1010][1002]; int lo[1100][1100],L[110]; int gcd(int a,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)