我是CodeChef的新手,正在解决C lang中的入门部分。我为问题写了代码=>
要求您计算一些小的正整数的阶乘。
输入
整数t,1 <= t <= 100,表示测试用例的数量,后跟t行,每行包含一个整数n,1 <= n <= 100。
输出
对于输入中给定的每个整数n,显示一行n值!
我得到正确的输出,但是我的代码没有被接受。请帮忙。
#include <stdio.h>
void fact(int x) {
int temp = 1;
if(x<=1) {
printf("%d\n", x);
} else {
for (int i=1; i<=x; i++) {
temp *= i;
}
printf("%d\n", temp);
}
}
int main(void) {
int n;
int t;
scanf("%d", &t);
if(t>=1 && t<=100) {
while(t--) {
scanf("%d", &n);
if (n>=1 && n<=100) {
fact(n);
}
}
}
return 0;
}
Sample input: 4 1 2 5 3 Sample output: 1 2 120 6
答案 0 :(得分:0)
100!
在9e157左右,因此不能用int
(甚至64位)表示。它甚至不能用unsigned long long
表示。
您必须使用double
,但由于浮点类型不能表示所有整数,因此可能无法获得确切的值。
如果要获取确切的值,则必须实现自己的整数结构或使用整数数组并对其进行乘法。