24h購物| | PChome| 登入
2009-09-15 19:18:57| 人氣1,885| 回應0 | 上一篇 | 下一篇

ACM 10497 Q10497: Sweet Child Makes Trouble

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

作法 : 遞迴

遞迴公式 :
N[0]=1
N[1]=0

N[n]=(N[n-1]+N[n-2])*(n-1)

我有嘗試用過暴力,目前仍得不到AC (待補暴力解)

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

#include<stdio.h>              
#include<stdlib.h>   
int N[801][335]={0},last[801]={0};
int DP ()
{
  N[0][0]=1;
  int a,b,c;
  for(a=2;a<=800;a++)
     {
        for(b=0;b<last[a-1]+2;b++)
           {
            N[a][b]+=(N[a-1][b]+N[a-2][b])*(a-1);
            N[a][b+1]+=N[a][b]/1000000;
            N[a][b]%=1000000;
           }
        for(b=last[a-1]+2;b>=0;b--)
           if(N[a][b]!=0)
             {
               last[a]=b;
               break;
             }
     }
}
main()  
{  
 int n;
 DP();
 while(scanf("%d",&n)==1&&n!=-1)
     {
        int a,b;
        if(n==1) printf("0\n");
        else
              {
                printf("%d",N[n][last[n]]);
                for(a=last[n]-1;a>=0;a--)
                   printf("%06d",N[n][a]);
                   printf("\n");
              }
     }
 /*N[n]=(N[n-1]+N[n-2])*(n-1)*/
 return 0;  
}

台長: 來源不明
人氣(1,885) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10780 Q10780: Again Prime? No time.
此分類上一篇:ACM 10591 Q10591: Happy Number

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