hdu4535吉哥系列故事——禮尚往來

吉哥系列故事——禮尚往來

Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 993    Accepted Submission(s): 523


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
問題: 十本不同的書放在書架上。現重新擺放,使每本書都不在原來放的位置。有幾種擺法?
錯排公式 a[i] = ((a[i-1]+a[i-2])%mod)*(i-1)%mod;  
本人數學不好,所以本能給大家推出各式。
#include<stdio.h>
long long a[102];
int m=1000000007;
int main()
{
    int n;
    int i,j;
    a[1]=0;a[0]=0;a[2]=1;a[3]=2;
    for(i=3;i<101;i++)
        a[i]=((a[i-1]+a[i-2])%m)*(i-1)%m;
    scanf("%d",&j);
    while(j--)
    {
        scanf("%d",&n);
        printf("%d\n",a[n]);
    }
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章