Skip to content

Instantly share code, notes, and snippets.

@ssanin82
Created December 21, 2014 13:51
Show Gist options
  • Save ssanin82/6043e62b70bbccdf5d47 to your computer and use it in GitHub Desktop.
Save ssanin82/6043e62b70bbccdf5d47 to your computer and use it in GitHub Desktop.
#include <iostream>
using namespace std;
class PascalTriangle {
long long **ck;
int size;
int mod;
public:
PascalTriangle(int size, int mod = 0): size(size), mod(mod) {
ck = new long long*[size];
for (int i = 0; i < size; ++i) {
ck[i] = new long long[size];
}
for (int i = 0; i < size; ++i) {
for (int j = 0; j <= i; ++j) {
if (0 == j || i == j) {
ck[i][j] = 1;
} else {
ck[i][j] = ck[i - 1][j] + ck[i - 1][j - 1];
if (mod) {
ck[i][j] %= mod;
}
}
}
}
}
virtual ~PascalTriangle() {
for (int i = 0; i < size; ++i) {
delete [] ck[i];
}
delete [] ck;
}
long long get(int n, int k) {
return ck[n][k];
return 0;
}
void dump() {
for (int i = 0; i < size; ++i) {
for (int j = 0; j <= i; ++j) {
cout << ck[i][j] << " ";
}
cout << endl;
}
}
};
int main(int argc, char** argv) {
PascalTriangle pt(10, 5);
pt.dump();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment