Cod sursa(job #1320623)

Utilizator heracleRadu Muntean heracle Data 18 ianuarie 2015 11:09:10
Problema Ciuperci Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>

FILE* in=fopen("ciuperci.in","r");
FILE* out=fopen("ciuperci.out","w");

bool v[55];

const int MOD=666013;

void back(long long x, long long y, long long &rez1, long long &rez2)
{
    if(x<=2)
    {
        if(x==2)
        {
            rez1=2;
            rez2=1;
        }
        if(x==1)
        {
            rez1=1;
            rez2=1;
        }
        return;
    }

    long long r1,r2;

    back(x/2,x/2-1,r1,r2);

    if(x&1)
    {
        rez1=r1*r1;
        rez1%=MOD;

        rez2=r1*r2*2;
        rez2%=MOD;
    }
    else
    {
        rez1=r1*r2*2;
        rez1%=MOD;

        rez2=r2*r2;
        rez2%=MOD;
    }

}

void rezolvare()
{
    long long x,rez,aux;

    fscanf(in,"%lld",&x);

    if(x<=2)
    {
        fprintf(out,"%lld\n",x);
        return;
    }

    back(x,x-1,rez,aux);

    fprintf(out,"%lld\n",rez);

}

int main()
{
    int k;

    fscanf(in,"%d",&k);

    for(int i=1; i<=k; i++)
    {
        rezolvare();
    }

    return 0;
}