Cod sursa(job #1679132)

Utilizator isa_mirica_mihaiMirica Matei isa_mirica_mihai Data 7 aprilie 2016 18:24:47
Problema Dirichlet Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <cstdio>
using namespace std;
int a[1005];
void produs_huge_int(int k){
    int i, tr, aux;
    for (i = 1; i <= a[0]; i ++)
        a[i] *= k;
    tr = 0;
    for (i = 1; i <= a[0]; i ++){
        aux = a[i] + tr;
        a[i] = aux % 10;
        tr = aux / 10;
    }
    while (tr){
        a[++a[0]] = tr % 10;
        tr /= 10;
    }
}
void impart_huge_int(int k){
    int i, tr;
    tr = 0;
    for (i = a[0]; i >= 1; i --){
        tr = tr * 10 + a[i];
        a[i] = tr / k;
        tr = tr % k;
    }
    while (a[0] > 1 && !a[a[0]])
        -- a[0];
}
void comb(int m, int p){
    int i;
	a[0] = a[1] = 1;
	for (i = 1; i <= p; i ++){
	    produs_huge_int(m - i + 1);
		impart_huge_int(i);
	}
	for (i = a[0]; i >= 1; i --)
        printf("%d", a[i]);
}
int main(){
    freopen("pm.in", "r", stdin);
    freopen("pm.out", "w", stdout);
    int x, y;
    scanf("%d%d", &x, &y);
    comb(x + 1, y);
    return 0;
}