2011-07-04 76 views
1

這裏是確切的問題SPOJ小階乘問題

你被要求計算出一些小的正整數的階乘。

輸入:

整數t,1 < =噸< = 100,表示測試用例的數量,接着爲T行,每行包含單個整數n,1 < = N < = 100。

輸出:

對於每個整數n在輸入給定的,顯示與n的值的線!

樣品輸入:

4  
1  
2  
5  
3 

示例輸出:

1  
2  
120  
6 

我已譯碼的SPOJ小階乘問題沒有24,但法官說是錯誤的答案。請看看我的代碼並幫助我。

class Program 
{ 
    static void Main(string[] args) 
    { 
     long numOfTestCases=0; 
     string factForAll = ""; 
     numOfTestCases = Convert.ToInt32(Console.ReadLine()); 
     long[] numArray = new long[numOfTestCases]; 
     for (long i = 0; i < numArray.Length; i++) 
     { 
      numArray[i]= Convert.ToInt64(Console.ReadLine()); 
     } 

     foreach (var item in numArray) 
     { 
      long factResult = findFact(item); 
      factForAll += factResult+"\n"; 
     } 
     Console.WriteLine(); 
     Console.WriteLine(factForAll); 

    } 
    public static long findFact(long number) 
    { 
     long factorial = 1; 
     if (number<=1) 
     { 
      factorial = 1; 
     } 
     for (long i = 1; i <=number; i++) 
     { 
      factorial *= i; 
     } 
     return factorial; 
    } 
} 
+0

你可以發佈一個鏈接的問題,請,或實際問題。 – Jethro

+0

因爲沒有更多的信息,我猜想這是錯誤的,因爲它不能立即回答問題。你建立一個字符串並在所有輸入被讀取後打印出來,並且你不告訴他們如何分解(順便按下F6,Enter)。 –

回答

0

看第一個註釋後,你需要寫在一行上的每個答案,C3是「\ r \ n」,而不是「\ n」。

0

該問題指定數字在範圍1 <= n <= 100。您正在計算long變量的這些因子的因子。 long的範圍是–92233720368547758089223372036854775807。結果很容易溢出這個範圍。

例如,

100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 

您將需要使用像BigInteger來操縱這個數字大。

+0

謝謝..我想通了,並修改了代碼..現在它的工作。但不幸的是,法官的系統未配置爲運行最新的框架,因此我的解決方案被視爲錯誤的答案 – kunaguvarun

0

C#不是SPOJ.com上的最佳語言選擇,因爲一切都在Unix/Linux服務器上運行,所用的C#版本實際上是Mono 2 ..這就是爲什麼很多東西不被支持,並且不會按預期運行。

因此,我建議切換到C++或Java :)