zoukankan      html  css  js  c++  java
  • 九度OJ 1084:整数拆分 (递归)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:2274

    解决:914

    题目描述:

    一个整数总可以拆分为2的幂的和,例如:
    7=1+2+4
    7=1+2+2+2
    7=1+1+1+4
    7=1+1+1+2+2
    7=1+1+1+1+1+2
    7=1+1+1+1+1+1+1
    总共有六种不同的拆分方式。
    再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。
    用f(n)表示n的不同拆分的种数,例如f(7)=6.
    要求编写程序,读入n(不超过1000000),输出f(n)%1000000000。

    输入:

    每组输入包括一个整数:N(1<=N<=1000000)。

    输出:

    对于每组数据,输出f(n)%1000000000。

    样例输入:
    7
    样例输出:
    6
    来源:
    2010年清华大学计算机研究生机试真题

    思路:

    递归求解。

    对于奇数2n+1,必定分解式中有1,去掉这个1,对应于与2n对应的拆分种数;

    对于偶数2n,分解式中有1时,对应2n-1,没有1时对应n。


    代码:

    #include <stdio.h>
     
    #define N 1000000
     
    int main(void)
    {
        int n, i;
        int a[N+1];
     
        a[0] = 1;
        for (i=0; i<=N/2; i++)
        {
            a[2*i] = (a[i]+a[2*i-2])%1000000000;
            a[2*i+1] = a[2*i];
        }
     
        while (scanf("%d", &n) != EOF)
            printf("%d
    ", a[n]);
     
        return 0;
    }
    /**************************************************************
        Problem: 1084
        User: liangrx06
        Language: C
        Result: Accepted
        Time:10 ms
        Memory:4744 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    利用idea里面的mysql插件进行导入sql文件
    JSTL标签
    deepin20系统下配置JAVA开发环境
    deepin20安装及问题解决
    SpringBoot 在项目启之后执行自定义方法的两种方式
    Nick 的经验书
    Java 经验书
    SpringBoot 经验书
    Linux 经验书
    在MacOS中启动SSH服务
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083948.html
Copyright © 2011-2022 走看看