2011-07-04 10 views
1

は、あなたはいくつかの小さな正の整数の階乗を計算するように求められ、正確な質問SPOJここで小さな階乗の問題

です。

入力:

整数t、1 < = T < = 100、テストケースの数を表す、Tライン続く、単一の整数n、1 < = N < = 100をそれぞれ含みます。

出力:

各整数について

n個の入力に与えられ、nの値を持つ行を表示!

サンプル入力:

4  
1  
2  
5  
3 

出力例:私はSPOJ小さな階乗問題を符号化している

1  
2  
120  
6 

いいえ、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

最初のコメントを見た後、あなたは「\ r \ n」が、ない「\ nの」あるC3に、単一ライン上の各回答を記述する必要があります。

0

この問題は、数値が1 <= n <= 100の範囲にあることを指定しています。これらの階乗をlong変数で計算しています。 longの範囲は–92233720368547758089223372036854775807です。結果はこの範囲を簡単にオーバーフローします。

例えば、

100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000 

あなたはこの大きな数字を操作するためBigIntegerのようなものを使用する必要があります。

+0

ありがとうございます..私は考え出し、コードを変更しました。しかし残念ながら、裁判官のシステムは最新のフレームワーク上で動作するように構成されていないため、私の解決策は間違った答えとして扱われます – kunaguvarun

0

すべてがUnix/Linuxサーバー上で実行されるため、C#はSPOJ.com上で最適な言語ではありません。使用されるC#のバージョンは実際にはMono 2です。そのため多くのものはサポートされず期待どおりに実行します。

は、だから私はC++やJava :)

関連する問題