#include #include static unsigned cubes(unsigned, unsigned); int main(void) { unsigned i, j; for( i = 0; i <= 10; i++ ) { std::cout << i << "-cube:" << std::endl; for( j = 0; j <= i; j++ ) std::cout << cubes(i, j) << " "; std::cout << std::endl; } return 0; } static unsigned almost_factorial(unsigned n, unsigned one) { unsigned acc; for( acc = 1; n > one; n-- ) acc = n * acc; return acc; } #define fac(n) almost_factorial(n, 1) static unsigned cubes(unsigned n, unsigned m) { unsigned diff; diff = n - m; return exp2(diff) * (almost_factorial(n, m) / fac(diff)); }