这是确切的问题
要求您计算一些小正整数的阶乘。
输入:
整数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;
}
}
答案 0 :(得分:0)
在查看第一条评论后,您需要在一行中写下每个答案,在c3中是&#34; \ r \ n&#34;而不是&#34; \ n&#34;。
答案 1 :(得分:0)
问题指出数字在1 <= n <= 100
范围内。您正在计算long
变量中的因子。 long
的范围是–9223372036854775808
到9223372036854775807
。结果很容易超出这个范围。
例如,
100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
您需要使用BigInteger之类的东西来操纵这么大的数字。
答案 2 :(得分:0)
所以我建议切换到C ++或Java:)