Cod sursa(job #675517)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 7 februarie 2012 18:05:44
Problema Ciuperci Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <set>

using namespace std;

#define mod 666013

int t, n;
pair<int, int> per;

pair<int, int> solve(int s1, int s2)
{
    if(s1<2 && s2<2)
        return make_pair(1, 1);
    pair<int, int> x = solve((s1-1)/2, (s2-1)/2+(s2-1)%2);
    pair<int, int> rez;
    if(s1%2)
        rez.first=(1LL*x.first*x.first)%mod;
    else
        rez.first=(1LL*x.first*x.second*2)%mod;

    if(s2%2)
        rez.second=(1LL*x.second*x.second)%mod;
    else
        rez.second=(1LL*x.first*x.second*2)%mod;
    return rez;
}

int main()
{
    freopen("ciuperci.in", "r", stdin);
    freopen("ciuperci.out", "w", stdout);

    scanf("%d", &t);
    for(int i=1; i<=t; ++i)
    {
        scanf("%d", &n);
        per=solve((n-1)/2, (n-1)/2+(n-1)%2);
        printf("%lld\n", (1LL*per.first*per.second*(2-n%2))%mod);
    }

    return 0;
}