 # Stuck on problem named "Small Factorial"

Contest Page | CodeChef : problem statement.
Solution: 48370915 | CodeChef : link to my solution.
Can anyone tell me why am I getting wrong answer? I checked the code many times, but it wasn’t helpful.

``````    for(int y = 0  ; y < (n-1) ; y++){

n--;
fact_num = fact_num*n;

}
``````

isn’t doing what you think it is doing, you’re decrementing `n` and incrementing `y` at the same time. Also you don’t need an array to store the results. I guess after checking the code down below, you’ll probably understand what you’ve done wrong (The solution is in C because I don’t like C++).

``````#include<stdio.h>
int main(){
int t;
scanf("%d",&t);
long n;
long res;
while(t--){
res=1;
scanf("%ld",&n);
if(n!=0){
for(;n>0;n--){
res*=n;
}
}
else{
res=1;
}
printf("%ld\n",res);
}
}``````
1 Like

output is not correct for
input
3
3
4
5
it give->
6
24
60
correct is->
6
24
120

1 Like

You can do this . it works for me

t = int(input())
n = []
for i in range(t):
x = int(input())
n.append(x)
for i in range(t):
a = n[i]
fact = 1
while a>0:
fact = fact * a
a = a - 1
print(fact)