Cod sursa(job #779724)

Utilizator paunmatei7FMI Paun Matei paunmatei7 Data 18 august 2012 17:02:28
Problema Dirichlet Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
int a[1000001];
unsigned long mod(int A[], unsigned long X)
{
    int i;
    unsigned long R=0;
    for (i=A[0];i;i--)
    {
        A[i]=(R=10*R+A[i])/X;
        R%=X;
    }
    while (!A[A[0]] && A[0]>1)
        A[0]--;
    return R;
}
void prod(int H[], unsigned long X)
{
    int i;
    unsigned long T=0;
    for (i=1;i<=H[0];i++)
    {
        H[i]=H[i]*X+T;
        T=H[i]/10;
        H[i]=H[i]%10;
    }
    while (T)
    {
        H[++H[0]]=T%10;
        T/=10;
    }
}
int main()
{
    int i,num,n;
    freopen("dirichlet.in","r",stdin);
    freopen("dirichlet.out","w",stdout);
    scanf("%ld",&n);
    a[0]=a[1]=1;
    for (i=n+2;i<=2*n;i++)
        prod(a,i);
    for (i=2;i<=n;i++)
        num=mod(a,i);
    printf("%ld",mod(a,9999991));
}