SPOJ小因子问题

时间:2011-07-04 16:47:53

标签: c# .net

这是确切的问题

  

要求您计算一些小正整数的阶乘。

     

输入:

     

整数t,1&lt; = t&lt; = 100,表示测试用例的数量,后跟t行,每行包含单个整数n,1 <= n <= 100。

     

输出:

     

对于输入中给出的每个整数n,显示一个值为n!

的行      

示例

     

示例输入:

4    
1    
2    
5    
3
     

示例输出:

1    
2    
120    
6

我编写了24号SPOJ小因子问题,但法官说的是错误的答案。请查看我的代码并帮助我。

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;
    }
}

3 个答案:

答案 0 :(得分:0)

在查看第一条评论后,您需要在一行中写下每个答案,在c3中是&#34; \ r \ n&#34;而不是&#34; \ n&#34;。

答案 1 :(得分:0)

问题指出数字在1 <= n <= 100范围内。您正在计算long变量中的因子。 long的范围是–92233720368547758089223372036854775807。结果很容易超出这个范围。

例如,

100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

您需要使用BigInteger之类的东西来操纵这么大的数字。

答案 2 :(得分:0)

C#不是SPOJ.com上的最佳语言选择,因为所有内容都在Unix / Linux服务器上运行,所使用的C#版本实际上是Mono 2 ..这就是为什么不支持很多东西,并且不会运行正如所料。

所以我建议切换到C ++或Java:)