Cod sursa(job #2384434)

Utilizator HoriqHoria Pacurar Horiq Data 20 martie 2019 18:55:46
Problema Dirichlet Scor 8
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("dirichlet.in");
ofstream cout("dirichlet.out");
void prod(int a[],int c[],int k)
{
    int tr,aux,i; 
    memset(c,0,1000*4);
    c[0]=a[0];
    for(i=1;i<=a[0];i++)
      c[i]=a[i]*k;
    tr=0;
    for(i=1;i<=c[0];i++)
    {
      aux=c[i]+tr;
      c[i]=aux%10;
      tr=aux/10;
    }
    while(tr)
    {
      c[++c[0]]=tr%10;
      tr/=10;
    }
}
void print(int v[])
{
  int i;
  for(i=v[0];i>=1;i--)
    cout<<v[i];
}
void cat(int a[],int c[],int k)
{
  int i,r=0;
  memset(c,0,1000*4);
  c[0]=a[0];
  for(i=a[0];i>=1;i--)
  {
    r=r*10+a[i];
    c[i]=r/k;
    r=r%k;
  }
  while(c[0]>1 && c[c[0]]==0)
    c[0]--;
}
void egal(int a[],int b[])
{
  int i;
  a[0]=b[0];
  for(i=1;i<=a[0];i++)
    a[i]=b[i];
}
int N[10005];
int a[10005];
int main()
{
    int n,k,d,n1,fact1=1,fact2=1,fact3=1,i,x;
    cin>>n;
    a[0]=1;
    a[1]=1;
    for(i=n+1;i<=2*n;i++)
    {
        prod(a,N,i);
        egal(a,N);
    }
    
    for(i=1;i<=n+1;i++)
    {
      cat(N,a,i);
      egal(N,a);
    }
    print(N);
    return 0;
}