JSFiddle - React, Tailwind, and code Playground

by Rahul Sharma

HTML

<script src="http://peterolson.github.com/BigInteger.js/BigInteger.min.js"></script>

JavaScript

var dictionary = [];

function nCr(n, r) {
    if (n <= 1) return 1;
    if (r > n - r) r = n - r;
    if (r == 0) return 1;
    if (dictionary[n * 100 + r]) return dictionary[n * 100 + r];
    var v = nCr(n - 1, r) + nCr(n - 1, r - 1);
    v = v % 1000000007;
    dictionary[n * 100 + r] = v;
    return v;
}

function getC(l) {
    h = "";
    for (var i = 0; i <= l; i++) {
        h += "{ ";
        for (var j = 0; j <= i; j++) {
            h += ((j) ? ", " : "") + nCr(i, j).toString();
        }
        for (var j = i + 1; j < l; j++) {
            h += ", 0";
        }
        if( i != l )
            h += ", 0 }, <br/>";
        else
            h += " }";
    }
    return h;
}

function getP(n, l) {
    var p = 1;
    h = "{ 1";
    for (var i = 1; i <= l; i++) {
        p *= n;
        h += ", " + p.toString();
    }
    h += " }"
    return h;
}

function getPP(n, l) {
    var p = bigInt(n);
    h = "{ 1";
    for (var i = 1; i <= l; i++) {
        h += ", " + p.toString();
        p = p.square().mod(1000000007);
    }
    h += " }"
    return h;
}

var less20 = ['','one ','two ','three ','four ', 'five ','six ','seven ','eight ','nine ','ten ','eleven ','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen '];
var more20 = ['', '', 'twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];

function inWords (num) {
    if ((num = num.toString()).length > 9) return 'overflow';
    n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
    if (!n) return; var str = '';
    str += (n[1] != 0) ? (less20[Number(n[1])] || more20[n[1][0]] + ' ' + less20[n[1][1]]) + 'crore ' : '';
    str += (n[2] != 0) ? (less20[Number(n[2])] || more20[n[2][0]] + ' ' + less20[n[2][1]]) + 'lakh ' : '';
    str += (n[3] != 0) ? (less20[Number(n[3])] || more20[n[3][0]] + ' ' + less20[n[3][1]]) + 'thousand ' : '';
    str += (n[4] != 0) ? (less20[Number(n[4])] || more20[n[4][0]] + ' ' + less20[n[4][1]])...