How to compute factorial of numbers like 300 as the output is not even in bound of unsigned long long int ?Please help.
#include<stdio.h>
#include<stdlib.h>
unsigned long long int factorial(int number) {
unsigned long long int temp;
if(number <= 1) return 1;
temp = (number * factorial(number - 1));
return temp;
}
int main(){
int t,k,i,a[100001];
unsigned long long int sum[100001];
scanf("%d",&t);
for(i=0;i<t;i++){
scanf("%d",&a[i]);
}
for(k=0;k<t;k++){
sum[k]=0;
for(i=0;i<=a[k];i++){
sum[k] += ((factorial(a[k])/(factorial(i)*factorial(a[k]-i)))%3);
//printf("%d\n",sum[k]);
}}
for(i=0;i<t;i++){
printf("%llu\n",sum[i]);
}
return 0;
}
I tried this but it halt at only 60!.