Here is my source code :
#include <iostream
#include <stdio.h>
using namespace std;
int main(void) {
int testCases,i,j,k,n,num,digits,carry=0,temp;
scanf("%d",&testCases);
int *arr[testCases];
int digitsArr[testCases];
for(i=0;i<testCases;i++){
scanf("%d",&n);
num=n;
arr[i] = new int[160];
if(n == 0 || n==1){
*arr[i]=1;
digits=1;
}
else{
for(j=10,k=0;n!= 0;j*10,k++){
*(arr[i]+k) = n%j;
n=n/j;
}
digits=k;
for(j=1;j<num;j++){
for(k=0;k<digits;k++){
temp = (*(arr[i]+k)) * j + carry;
if(temp>10){
*(arr[i]+k) = temp%10;
carry = temp/10;
}
else{
*(arr[i]+k) = temp;
carry=0;
}
}
if(carry > 10){
*(arr[i]+k)=carry%10;
k++;
*(arr[i]+k)=carry/10;
digits=k+1;
carry=0;
}
else if(carry >0){
*(arr[i]+k)=carry;
digits=k+1;
carry=0;
}
}
}
digitsArr[i]=digits-1;
}
for(i=0;i<testCases;i++){
for(j=digitsArr[i];j >= 0;j--){
printf("%d",*(arr[i]+j));
}
printf("\n");
}
return 0;
}