Pagini recente » Cod sursa (job #3193068) | Cod sursa (job #1422044) | Cod sursa (job #328359) | Cod sursa (job #3143239) | Cod sursa (job #3140809)
#include <fstream>
using namespace std;
ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
int C[200001];
void impartire(int x[], int n) {
int i,r=0;
for(i=x[0];i>0;i--)
{
r=10*r+x[i];
x[i]=r/n;
r%=n;
}
for(;x[x[0]]==0 && x[0]>1;)
x[0]--;
}
void inmultire(int A[], int B) {
int T = 0;
for(int i = 1; i <= A[0]; i++) {
T += A[i] * B;
A[i] = T % 10;
T /= 10;
}
while (T > 0) {
A[++A[0]] = T % 10;
T /= 10;
}
}
void afisare(int A[]) {
for(int i = A[0]; i > 0; i--)
g << A[i];
}
void comb(int n, int k) {
C[0] = 1; C[1] = 1;
if(n - k < k)
k = n - k;
for(int i = 1; i <= k; i++) {
inmultire(C, n - i + 1);
impartire(C, i);
}
}
int main() {
int n; f >> n;
comb(2 * n, n);
impartire(C, n + 1);
afisare(C);
return 0;
}