Pagini recente » Cod sursa (job #1380860) | Cod sursa (job #1351433) | Cod sursa (job #287009) | Cod sursa (job #1521472) | Cod sursa (job #2918137)
//Ilie Dumitru
#include<cstdio>
#include<algorithm>
const int NMAX=1000005;
int N, ans[NMAX], A, B, C;
int segTree[NMAX<<2];
void segTreeSet(int node, int l, int r)
{
if(A<=l && r<=B)
segTree[node]=C;
else
{
if(segTree[node])
segTree[(node<<1)|1]=segTree[(node<<1)+2]=segTree[node];
int mid=(l+r)>>1;
if(mid>=A)
segTreeSet((node<<1)|1, l, mid);
if(mid<B)
segTreeSet((node<<1)+2, mid+1, r);
}
}
void segTreeGet(int node, int l, int r)
{
if(l==r)
ans[l]=segTree[node];
else
{
if(segTree[node])
segTree[(node<<1)|1]=segTree[(node<<1)+2]=segTree[node];
int mid=(l+r)>>1;
segTreeGet((node<<1)|1, l, mid);
segTreeGet((node<<1)+2, mid+1, r);
}
}
int main()
{
FILE* f=fopen("curcubeu.in", "r"), *g=fopen("curcubeu.out", "w");
int i, aux;
fscanf(f, "%d%d%d%d", &N, &A, &B, &C);
if(B<A)
{
aux=A;
A=B;
B=aux;
}
fclose(f);
for(i=1;i<N;++i)
{
segTreeSet(0, 0, N);
A=A*(i+1)%N;
B=B*(i+1)%N;
if(B<A)
{
aux=A;
A=B;
B=aux;
}
C=C*(i+1)%N;
}
segTreeGet(0, 0, N);
for(i=1;i<N;++i)
fprintf(g, "%d\n", ans[i]);
fclose(g);
return 0;
}