zoukankan      html  css  js  c++  java
  • POJ 2229 DP

    题意:给你个数,让你把它拆成2的幂的和,问有几种拆分方案。
    思路:仔细想一想,就是个递推。

    1. 如果是奇数,那么它的方案数和它减一这个数的方案数是一样的。因为1不能拆成除1以外的2的幂之和。(呃说的不太清楚,意会意会(⊙﹏⊙)b)。【举个例子:100的方案数 和101的方案数是一样的】
    2. 如果是偶数,那么它的方案数等于它减一这个数的方案数与它除以二这个数的方案数之和。【举个例子:6的方案数=3的方案数+5的方案数】

    也可以先手算几个数找找规律,用不完全归纳。

    // by Sirius_Ren
    #include <cstdio>
    using namespace std;
    int f[1000001],n;
    int main(){
        scanf("%d",&n);
        f[1]=1;f[2]=2;
        for(int i=3;i<=n;i++)
            if(i&1)f[i]=f[i-1];
            else f[i]=(f[i-1]+f[i/2])%1000000000;
        printf("%d",f[n]);
    }

    代码很短,只有10行。
    这里写图片描述

  • 相关阅读:
    缅怀
    74LS164的使用
    跑步
    Datasheet,你会读么?[转]
    清华附小给的书单
    iOS-小知识
    网络-GET&POST
    网络-基础
    网络-HTTP其他常见方法
    数据解析
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532464.html
Copyright © 2011-2022 走看看