Ive been trying to submit the soluton for this problem. Initialyy when i used the a size of 16 for the testArr[] it gave me an SIGSEGV error. But for this code, there is no error but the wrong answer notification pops up. Though the answer is correct when i try to run it on any other IDE.
Here my 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 testArr[1000];
for(i=0;i<testCases;i++){
scanf("%d",&n);
num=n;
if(n == 0 || n==1){
testArr[0]=1;
digits=1;
}
else{
k=0;
for(j=10;n!= 0;j=j*10){
testArr[k]= n%j;
n=n/j;k++;
}
digits=k;
for(j=1;j<num;j++){
for(k=0;k<digits;k++){
temp = testArr[k] * j + carry;
if(temp>10){
testArr[k] = temp%10;
carry = temp/10;
}
else{
testArr[k] = temp;
carry=0;
}
}
if(carry > 10){
testArr[k]=carry%10;
k++;
testArr[k]=carry/10;
digits=k+1;
carry=0;
}
else if(carry >0){
testArr[k]=carry;
digits=k+1;
carry=0;
}
}
}
for(k=(digits-1);k>=0;k--){
printf("%d",testArr[k]);
}
printf("\n");
}
return 0;
}