#include <stdio.h>
#include <stdlib.h>
#include <math.h>


double l_gamma(int n, int K)
{
    static double *x;
    static int flag = 1;
    int i;
    if (flag == 1) {
	printf("Initializing x...\n");
	x = (double *) malloc(K * sizeof(double));
	if (x == NULL) {
	    printf("Memory allocation failed. Exiting.\n");
	    exit(1);
	}
	x[1] = x[0] = 0;
	for (i = 2; i < K; i++) {
	    x[i] = x[i-1] + log((double) i);
	}
	flag = 0;
    }
    return x[n];
}


int main()
{
    int i;
    int K;
    printf("Enter the value of K: ");
    scanf("%d", &K);
    for (i = 80; i < 100; i++) {
	printf("%d : %f\n", i, l_gamma(i, K));
    }
    return 3;
}
