编程啦 1006

一卡通大冒险

时间限制:5000 ms  |  内存限制:16384 KB
描述
因为长期钻研算法,无暇考虑个人问题,北航ACM/ICPC训练小组的帅哥们大部分都是单身。某天,他们在机房商议一个绝妙的计划“一卡通大冒险”。这个计划是由Wash最先提出的,计划的内容是,把自己的联系方式写在校园一卡通的背面,然 后故意将自己的卡“遗失”在某处(如水房,TD,食堂,主M……)他们希望能有MM看到他们“遗失”卡,能主动跟他们联系,这样就有机会请MM吃饭了。

他们决定将自己的一卡通夹在几本相同的书里,然后再将书“遗失”到校园的各个角落。正当大家为这个绝妙的计划叫好的时候,大家想到一个问题。

很明显,如果只有一张一卡通,那么只有一种方法,即,将其夹入一本书中。

当有两张一卡通时,就有了两种选择,即,将两张一卡通夹在一本书里,或者分开夹在不同的书里。

当有三张一卡通时,他们就有了五种选择,即: 【〖A〗 〖B〗 〖C〗】 【〖AB〗 〖C〗】 【〖BC〗 〖A〗】 【〖AC〗 〖B〗】 【〖ABC〗】

于是,这个邪恶计划的组织者Wash希望了解,如果ACM/ICPC训练小组里有n为帅哥(即有N张一卡通),那么要把这些一卡通夹到书里有多少种不同的方法。

输入
包含多组数据,第一行为n,表示接下来共有n组数据。以下n行每行一个数x,表示共有x张一卡通。(1<=x<=2000)。

输出
对每组测试数据,输出一行:不同的方法数 ,因为这个数可能非常大,我们只需要它除以10000的余数 。
样例输入
4
1
2
3
100
样例输出
1
2
5
751

题目中有个要点:一个是把第i张卡放入第j本书,一个是把第i张卡不放入第j本书

#include<stdio.h>

int f[2001][2001];
int n,t,s;

int main()
{
       int i,j;
       for(i=1;i<=2000;i++)
       {
              f[i][i]=1;
              f[i][1]=1;
       }
       for(i=3;i<=2001;i++)
              for(j=2;j<i;j++)
              {
                     f[i][j]=f[i-1][j]*j+f[i-1][j-1];
                     if(f[i][j]>10000)
                            f[i][j]%=10000;
              }
              scanf("%d",&n);
              for(i=1;i<=n;i++)
              {
                     scanf("%d",&t);
                     s=0;
                     for(j=1;j<=t;j++)
                            s+=f[t][j];
                     if(s>10000) s%=10000;
                     printf("%d\n",s);
              }
              return 0;
}

2 Comments

iHenry says:

如果我看到有一本掉落的我看不懂的书,我是绝对不会把它翻开来的(虽然我是男的)…
好好考虑考虑应该夹在什么书里吧:D

* 笑得海潮 says:

额……哈哈,或许换个更可爱点的小饰物更好

Leave a Reply to 笑得海潮 Cancel Reply

Your email address will not be published.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax