24h購物| | PChome| 登入
2009-11-17 19:28:03| 人氣1,937| 回應0 | 上一篇 | 下一篇

97全國資訊學科能力競賽 4. 工作順序問題

推薦 0 收藏 0 轉貼0 訂閱站台

作法:遞迴

放入第N個工作時
會是N-1的種類*N-1
因為有N-1可以插入
接來比較不同的是
假使他放入每一個工作後面時 就會有一個新的工作排程
除了放入N-1編號的後面
這樣只有N-2個放置可以插入
但是放入的種類會是(N-2)的種類*(N-2)

所以推倒出來
F[1]=1 F[2]=1

F[a]=(F[a-1]*(a-1)+F[a-2]*(a-2) a>3

/**********************************************************/

#include<stdlib.h>
#include<stdio.h>
main()
{
   long long int F[3]={1,1,0},N,M;
   scanf("%lld %lld",&N,&M);
   int a;
   if(N<3) printf("%d\n",1%M);
   else
      for(a=3;a<=N;a++)
         F[2]=(F[1]*(a-1)+F[0]*(a-2))%M,F[0]=F[1],F[1]=F[2];
      printf("%lld\n",F[1]);
  return 0;
}

台長: 來源不明
人氣(1,937) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:TOI 2008 4. 地道問題
此分類上一篇:NOIP 2008 提高组 NOIP 2008 2.火柴棍等式

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文