码迷,mamicode.com
首页 > 其他好文 > 详细

【UVA12034】比赛名次

时间:2018-10-30 20:02:18      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:number   void   和我   word   因此   fine   alt   main   str   

题面

给定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\n",i,f[n]);  
  28. }  

【UVA12034】比赛名次

标签:number   void   和我   word   因此   fine   alt   main   str   

原文地址:https://www.cnblogs.com/NSD-email0820/p/9879004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!