Cod sursa(job #2769359)

Utilizator cezarinfoTulceanu Cezar cezarinfo Data 14 august 2021 22:29:18
Problema Ciuperci Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
using namespace std;
FILE*in=fopen("ciuperci.in","r");
FILE*out=fopen("ciuperci.out","w");
int q,i,r=0;
long long n,v1,v2,w1,w2,a,b;
const int mod=666013;
long long f(int p)
{
    long long o=2;
    long long rr=1;
    while(p>0)
    {
        if(p%2==1)
        {
            rr=(long long)(rr*o);
            rr=(long long)(rr%mod);
        }
        o=(long long)(o*o);
        o=(long long)(o%mod);
        p/=2;
    }
    return rr;
}
int main()
{
    fscanf(in,"%d",&q);
    for(i=1;i<=q;i++)
    {
        r=0;
        fscanf(in,"%lld",&n);
        a=1;
        b=0;
        v1=(long long)n;
        while(v1>0)
        {
            w2=(long long)((long long)((long long)(v1-1)/2)+1);
            w1=(long long)((long long)(v1-1)/2);
            if(v1%2==1)
            {
                a=(long long)((long long)(2*a)+b);
                r+=b;
            }
            else
            {
                b=(long long)((long long)(2*b)+a);
                r+=a;
            }
            v2=(long long)w2;
            v1=(long long)w1;
        }
        fprintf(out,"%lld\n",f(r));
    }
}