Race UVA - 12034

Disky and Sooma, two of the biggest mega minds of Bangladesh went to a far country. They ate, coded
and wandered around, even in their holidays. They passed several months in this way. But everything
has an end. A holy person, Munsiji came into their life. Munsiji took them to derby (horse racing).
Munsiji enjoyed the race, but as usual Disky and Sooma did their as usual task instead of passing some
romantic moments. They were thinking- in how many ways a race can finish! Who knows, maybe this
is their romance!
In a race there are n horses. You have to output the number of ways the race can finish. Note that,
more than one horse may get the same position. For example, 2 horses can finish in 3 ways.
1. Both first
2. horse1 first and horse2 second
3. horse2 first and horse1 second

Input

Input starts with an integer T (≤ 1000), denoting the number of test cases. Each case starts with a
line containing an integer n (1 ≤ n ≤ 1000).

Output

For each case, print the case number and the number of ways the race can finish. The result can be
very large, print the result modulo 10056.

Sample Input

3
1
2
3

Sample Output

Case 1: 1
Case 2: 3
Case 3: 13

可以有多匹马占用同一个名次,问n匹马有几种比赛结果。
状态转移方程是s[i][j]=(s[i-1][j]*j+s[i-1][j-1]*j),指i匹马最后有j个名次的情况,可以由i-1匹有j个名次的情况中,某个名次多加一匹马得到,也可以由i-1匹有j-1个名次的情况中,多加一匹马单独占有一个名次得到,即两种情况之和。

#include <iostream>
#include <string.h>
using namespace std;

int s[1005][1005];
int ss[1005];
int main()
{
    int i,j,T,n,k;

    memset(s,0,sizeof(s));
    memset(ss,0,sizeof(ss));
    s[1][1]=1;
    ss[1]=1;
    for(i=2;i<=1000;i++){
        for(j=1;j<=i;j++){
            s[i][j]=(s[i-1][j]*j+s[i-1][j-1]*j)%10056;
            ss[i]+=s[i][j];
            ss[i]%=10056;
        }
    }
    cin>>T;
    k=1;
    while(k<=T){
        cin>>n;
        cout<<"Case "<<k<<": ";
        cout<<ss[n]<<endl;
        k++;
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: vcs仿真 -deraceclockdata race命令是vcs仿真器中的一个用法,在进行时钟域(clock domain)处理时非常有用。该命令的作用是删除仿真器中的数据并修复由于时钟域交叉引起的问题。 时钟域交叉是指在系统设计中,不同的时钟信号以不同的速率运行,可能会导致数据在时钟域之间的相互交叉。这种交叉可能会导致在仿真过程中出现时序(timing)和同步(synchronization)问题。通过使用-vcs仿真器的deraceclockdata选项,我们可以解决这些问题。 具体来说,-deraceclockdata race选项用于检测和纠正由于时钟域交叉引起的竞争条件(race condition)的问题。它在仿真期间监测数据流经过不同时钟域的情况,并根据时钟域之间的关系来解决并发读写问题。 使用-vcs仿真器的-dereaceclockdata race选项时,仿真器将根据给定的配置文件对模拟的数据进行纠正。这个配置文件告诉仿真器哪些数据流被视为交叉的,并根据时钟域之间的关系来修复它们。 总而言之,vcs仿真器中的-deraceclockdata race选项是一种解决时钟域交叉问题的方案。它通过识别并修复可能导致时序和同步问题的交叉数据流,提高了设计的准确性和稳定性。 ### 回答2: vcs仿真 -deraceclockdata race 是VCS仿真工具的一个选项。它可以用于race条件检测。 在多线程程序中,如果两个或多个线程同时访问和修改共享数据,可能会出现race条件。race条件指的是对共享数据的竞争访问,结果取决于这些线程的执行顺序,从而导致不确定的行为。 -vcs仿真 -deraceclockdata race选项能够帮助开发人员检测和排除race条件。当使用该选项时,VCS仿真工具会在运行时追踪和记录每个线程对共享数据的访问和修改操作。然后,它会分析这些操作的执行顺序以检测是否存在race条件。 如果存在race条件,VCS仿真工具会生成相应的报告,指示在哪些地方可能会出现race条件以及可能的执行顺序。开发人员可以根据这些报告来识别和修复race条件,从而提高程序的稳定性和可靠性。 总而言之,vcs仿真 -deraceclockdata race选项是VCS仿真工具中用于race条件检测的一个功能。它通过跟踪和分析多个线程对共享数据的访问和修改操作来帮助开发人员发现潜在的race条件,并提供相应的报告以指导修复。这有助于提高程序的稳定性和可靠性。 ### 回答3: vcs仿真是一种常用的电路设计验证工具,可以帮助工程师在设计阶段评估电路的性能和功能。在vcs仿真中,-deraceclockdata race是一个选项,用于识别和解决时序问题。 时序问题主要指的是在电路中存在的由于时钟信号引发的数据冲突或竞争。当数据在时钟上升沿或下降沿发生改变时,可能会导致信号传输延迟,从而出现数据冲突。这种情况下,电路的行为将变得不可预测,导致设计错误或功能失败。 -deraceclockdata race选项在vcs仿真中非常有用,它可以帮助工程师及早发现和解决时序问题。具体而言,该选项可以检查不同时钟域中数据的传输时间,以确定是否存在潜在的冲突或竞争条件。如果存在时序问题,vcs仿真工具会生成警告或错误信息,以指示设计中的问题。 通过使用-deraceclockdata race选项,工程师可以及时发现潜在的电路时序问题,并通过调整设计、提高时序容量或使用适当的同步电路来解决这些问题。这样可以确保设计的性能和稳定性,并降低开发过程中出现不良结果的风险。 总之,vcs仿真中的-deraceclockdata race选项对于识别和解决时序问题非常重要。通过使用该选项,工程师可以确保设计的准确性和可靠性,提高电路的性能和功能效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值