【UOJ 574】桂林的文件

【题目描述】:

桂林有N个不同的文件,现在他要创建N-1个文件夹(相同)来保存这些文件,每个文件夹内有且只有两个项目,每个项目可以是一个文件或者一个文件夹,问他有多少种不同的存储方式。

【输入描述】:

第一行一个正整数T,表示数据组数。

接下来T行每行一个正整数N。

【输出描述】:

共T行,在模19260817的意义下桂林的存储方式总数。

【样例输入】:

2
3
5

【样例输出】:

3
105

【时间限制、数据范围及描述】:

时间:1s 空间:256M

30%的数据:2≤N≤20;

70%的数据:2≤N≤1000;

100%的数据:T≤100, 2≤N≤10^6

题解:emm用排列组合的一些知识推导一下就出来啦。

           类似于卡特兰数。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
typedef long long ll;
using namespace std;
const int mod=19260817;
ll  t,n,dp[1000005];

void init(){
    dp[1]=0; dp[2]=1;
    for(int i=1;i<=1000001;i++){
        dp[i+2]=dp[i+1]*(i*2+1);
        dp[i+2]%=mod;
    }
}

int main(){
    cin>>t;
    init();
    while(t--){
        cin>>n;
        printf("%lld\n",dp[n]);
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/wuhu-JJJ/p/11478215.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值