吉哥系列故事——礼尚往来
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 264 Accepted Submission(s): 173
Problem Description
吉哥还是那个吉哥 那个江湖人称“叽叽哥”的基哥 每当节日来临,女友众多的叽叽哥总是能从全国各地的女友那里收到各种礼物。 有礼物收到当然值得高兴,但回礼确是件麻烦的事! 无论多麻烦,总不好意思收礼而不回礼,那也不是叽叽哥的风格。 现在,即爱面子又抠门的叽叽哥想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了! 假设叽叽哥的n个女友每人送他一个礼物(每个人送的礼物都不相同),现在他需要合理安排,再回送每个女友一份礼物,重点是,回送的礼物不能是这个女友之前送他的那个礼物,不然,叽叽哥可就摊上事了,摊上大事了...... 现在,叽叽哥想知道总共有多少种满足条件的回送礼物方案呢?
Input
输入数据第一行是个正整数T,表示总共有T组测试数据(T <= 100); 每组数据包含一个正整数n,表示叽叽哥的女友个数为n( 1 <= n <= 100 )。
Output
请输出可能的方案数,因为方案数可能比较大,请将结果对10^9 + 7 取模后再输出。 每组输出占一行。
Sample Input
3 1 2 4
Sample Output
0 1 9
Source
1 //AC----错排 2 #include3 #include 4 5 using namespace std; 6 const int MOD = 1000000007; 7 long long a[101]; 8 9 void fun()10 {11 a[0] = a[1] = 0;12 a[2] = 1;13 for(int i = 3; i <= 100; ++i)14 {15 a[i] = (a[i-1]+a[i-2]) * (i-1) % MOD;16 }17 }18 19 int main()20 {21 int T, n;22 scanf("%d", &T);23 fun();24 while(T--)25 {26 scanf("%d", &n);27 printf("%d\n", a[n]);28 }29 }