首页 > 代码库 > ZZULI 1867: 礼上往来【错位排序】
ZZULI 1867: 礼上往来【错位排序】
1867: 礼上往来
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 216 Solved: 65
SubmitStatusWeb Board
Description
每当节日来临,女友众多的xxx总是能从全国各地的女友那里收到各种礼物。
有礼物收到当然值得高兴,但回礼确是件麻烦的事!
无论多麻烦,总不好意思收礼而不回礼,那也不是xxx的风格。
现在,即爱面子又抠门的xxx想出了一个绝妙的好办法:他准备将各个女友送来的礼物合理分配,再回送不同女友,这样就不用再花钱买礼物了!
假设xxx的n个女友每人送他一个礼物(每个人送的礼物都不相同),现在他需要合理安排,再回送每个女友一份礼物,重点是,回送的礼物不能是这个女友之前送他的那个礼物,不然,xxx可就摊上事了,摊上大事了......
现在,xxx想知道总共有多少种满足条件的回送礼物方案呢?
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
思路:公式:s[i]=(i-1)*(s[i-1]+s[i-2]),s[1]=0,s[2]=1;
AC-code:
[cpp] view plain copy
- #include<cstdio>
- long long num[110];
- int main()
- {
- int n,i,T;
- num[1]=0;num[2]=1;
- for(i=3;i<110;i++)
- num[i]=(i-1)*(num[i-1]+num[i-2])%1000000007;
- scanf("%d",&T);
- while(T--)
- {
- scanf("%d",&n);
- printf("%lld\n",num[n]);
- }
- }
ZZULI 1867: 礼上往来【错位排序】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。