随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

两人赛马,最终名次有3种可能

n人赛马时最终名次的可能性的个数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream>
#include<cstring>
#include<algorithm>
#include<set>
using namespace std;
 #define mod 10056
 int c[1002][1002],n,f[1002];
 
 void init_c(){
    int i,j;
    c[1][1]=1;
    for(i=0;i<=1000;i++) c[i][0]=1;
     
    for(i=2;i<=1000;i++)
        for(j=1;j<=i;j++)
        c[i][j]=(c[i-1][j]+c[i-1][j-1]),c[i][j]%=mod;
 }
 int F(int x){
    if(~f[x]) return f[x] ;
     
    int i, s=0;
    for(i=1;i<=x;i++) s+=c[x][i]*F(x-i),s%=mod;
    return f[x]=s;
 }
 signed main() {
    init_c();
    int cas=0;
    int tes;cin>>tes;
    memset(f,-1,sizeof f);f[0]=f[1]=1,f[2]=3;
     
    while(tes--){
        int n;cin>>n;
        printf("Case %d: %d\n",++cas,F(n));
    }
 }

 

posted on   towboat  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示