zoukankan      html  css  js  c++  java
  • tyvj1172 自然数拆分Lunatic版

    背景

    话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强。

    描述

    输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。

    输入格式

    输入只有一个整数n,表示待拆分的自然数n。 0<n<=4000
    PS:0也算自然数,所以这里应该写正整数比较好
    但是为了尊重原作者的版权(这有版权吗- -),没有改掉。
    本来n是要到5000的,但是开到5000的话我的程序就Memory Limit Exceeded了。。

    输出格式

    输出一个数,即所有方案数
    因为这个数可能非常大,所以你只要输出这个数 mod 2147483648 的余数即可。

    测试样例1

    输入

    7

    输出

    14

    备注

    解释:
    输入7,则7拆分的结果是
    7=1+6
    7=1+1+5
    7=1+1+1+4
    7=1+1+1+1+3
    7=1+1+1+1+1+2
    7=1+1+1+1+1+1+1
    7=1+1+1+2+2
    7=1+1+2+3
    7=1+2+4
    7=1+2+2+2
    7=1+3+3
    7=2+5
    7=2+2+3
    7=3+4


    一共有14种情况,所以输出14 mod 2147483648,即14小小鱼加强Admin的P1171
    PS:虽说加强了,但是好像还是很简单。。。
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    unsigned int n,dp[4005][4005],ans,mod = 2147483648;
    int main(){
        cin>>n;
        dp[0][0] = 1;
        for(int i = 1;i <= n;i++){
            for(int j = i;j <= n;j++){
                dp[i][j] = (dp[i-1][j-1] + dp[i][j-i]) % mod;
                if(i > 1 && j == n) ans = (ans + dp[i][j]) % mod;
            }
        }
        cout<<ans;
        return 0;
    }
  • 相关阅读:
    找到IOS中的闪退日志
    day10-单元测试用例
    1、MySQL索引优化分析
    大话处理器-第2章-初识处理器
    sunset: dusk
    CK: 00
    My File Server: 1
    [luogu 5049] 旅行(数据加强版)
    [luogu p1081] 开车旅行
    [luogu p1613] 跑路
  • 原文地址:https://www.cnblogs.com/hyfer/p/5754689.html
Copyright © 2011-2022 走看看