Cod sursa(job #637520)

Utilizator handz.FMI Andrei Tanasescu handz. Data 20 noiembrie 2011 15:01:12
Problema Dirichlet Scor 0
Compilator cpp Status done
Runda .com 2011 Marime 1.15 kb
#include <iostream>
#include <fstream>

ifstream f("dirichlet.in");
ofstream g("dirichlet.out");
int n,stiva[20],count=0;

void ini_date()
{
    int i;
    f>>n;
    f.close();
    for(i=0; i<=n ;i++)
    {
        stiva[i]=0;
    }
}

int valid_1(int p)
{
    int i,s=0;
    for(i=1; i<=p ;i++)
    {
        s+=stiva[i];
    }
    if(s==p)
    {
        return 2;
    }
    else
    {
        if(s<p)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

int valid_2(int p)
{
    int i,s=0;
    for(i=1; i<=p ;i++)
    {
        s+=stiva[i];
    }
    if(s==n)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

void BKT(int p)
{
    int pval;
    if(p==n+1)
    {
        if(valid_2(p-1))
        {
            count++;
        }
    }
    else
    {
        for(pval=0; pval<=p ;pval++)
        {
            stiva[p]=pval;
            if(valid_1(p))
            {
                BKT(p+1);
            }
        }
    }
}

int main()
{
    ini_date();
    BKT(1);
    g<<count;
    g.close();
    return 0;
}