UVA12034比赛名次

Posted nsd-email0820

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA12034比赛名次相关的知识,希望对你有一定的参考价值。

题面

给定n匹马,要求出可能的排名情况(可能并列)

n<=1000,答案对10056取模

分析

和我以前的数论三题里面的一道题一样,但是那个题没有取模,于是n只在10以内

设f(n)为答案 则第一名可能是1~n-1个,第一名一个的时候就是C(n,1)*f(n-1),第一名两个的时候就是C(n,2)*f(n-2)

因此可得到 f(n)=∑C(n,i)*f(n-i)

代码

  1. #include<bits/stdc++.h>  
  2. using namespace std;  
  3. #define N 1010  
  4. #define mod 10056  
  5. int t,n,f[N],c[N][N];  
  6. inline void pre()  
  7. {  
  8.     c[0][0]=c[1][0]=1;  
  9.     for(int i=1;i<N;i++)  
  10.     {  
  11.         c[i][0]=1;  
  12.         for(int j=1;j<=i;j++)  
  13.             c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;  
  14.     }  
  15.     for(int i=1;i<N;i++)  
  16.     {  
  17.         f[i]=1;  
  18.         for(int j=1;j<=i;j++)  
  19.             f[i]+=f[i-j]*c[i][j],f[i]%=mod;  
  20.     }  
  21. }  
  22.   
  23. int main()  
  24. {  
  25.     cin>>t;pre();  
  26.     for(int i=1;i<=t;i++)  
  27.         cin>>n,printf("Case %d: %d ",i,f[n]);  
  28. }  

以上是关于UVA12034比赛名次的主要内容,如果未能解决你的问题,请参考以下文章

UVa 12034 Race (递推+组合数学)

Uva12034 (组合数取模)

UVA 12034 Race

UVA - 1612 Guess (猜名次)(贪心)

确定比赛名次

HDU 1285 确定比赛名次