2012-04-11 2 views
4

나는 1000생성 벨 수 알고리즘

벨 수는 거대하고 난 ULONG에 저장할 수 없습니다 500 사이의 큰 값에 대한 n 번째 벨 번호를 생성하는 것을 시도하고있다.

내가 수를 계산하는 삼각 방법을 시도 :

은 (http://en.wikipedia.org/wiki/Bell_number 알고하려면 수는 벨).

거대한 숫자를 저장하고 작업을 수행하는 방법을 알려줄 수 있습니까? 여기

은 동일하게 계산하는 빠른 방법이 있다면 내가


using System; 

class Program  
{   
    static void Main(string[] args) 
    { 
     int length; 
     do 
     { 
      length =-1;     
      string numLength= Console.ReadLine(); 
      if (int.TryParse(numLength, out length)) 
      { 
       Console.WriteLine("Sequence length is : {0}", 
              TriangularMethod(length)); 
      } 
     }while(length>0); 
    } 

    static ulong TriangularMethod(int n) 
    { 
     Dictionary<long, List<ulong>> triangle = 
           new Dictionary<long, List<ulong>>(); 
     triangle.Add(1, new List<ulong>(new ulong[] { 1 })); 

     for (int i = 2; i <= n; i++) 
     { 
      triangle.Add(i, new List<ulong>()); 
      triangle[i].Add(triangle[i - 1].Last()); 
      ulong lastVal = 0; 
      for (int k = 1; k < i; k++) 
      { 
       lastVal = triangle[i][k - 1] + triangle[i - 1][k - 1]; 
       triangle[i].Add(lastVal);      
      } 

      triangle.Remove(i - 2); 
     } 
     return triangle[n].Last(); 
    }   
} 

을 쓴 코드입니다. 제발. 네임 스페이스에

답변

관련 문제