[ create a new paste ] login | about

Link: http://codepad.org/Dgc4ckXj    [ raw code | output | fork ]

C, pasted on May 1:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define N_MAX 52

int64_t pascal_triangle[N_MAX + 1][N_MAX + 1] = {{0}};

void init()
{
    int i, j;

    for (i = 0; i < N_MAX + 1; i++) {
        pascal_triangle[i][0] = 1;
        for (j = 1; j <= i; j++) {
            pascal_triangle[i][j] = pascal_triangle[i-1][j-1] + pascal_triangle[i-1][j];
        }
    }
}

int64_t ncr(int n, int r)
{
    if (0 <= n && n <= N_MAX &&
        0 <= r && r <= N_MAX) {
        return pascal_triangle[n][r];
    }
    return 0;
}

int main()
{
    int64_t ncr_value;
    int n = 52, r = 26;

    init();

    ncr_value = ncr(n, r);
    if (ncr_value == 0) {
        fprintf(stderr, "パラメータ不正 n : %d r : %d\n", n, r);
        return EXIT_SUCCESS;
    }

    printf("%dC%d %lld\n", n, r, ncr_value);

    return EXIT_SUCCESS;
}


Output:
1
52C26 495918532948104


Create a new paste based on this one


Comments: