Pagini recente » Cod sursa (job #2281660) | Cod sursa (job #1193644) | Cod sursa (job #230171) | Cod sursa (job #671502) | Cod sursa (job #567240)
Cod sursa(job #567240)
#include <cstdio>
#define infile "curcubeu.in"
#define outfile "curcubeu.out"
#define MaxN 1000002
int cul[MaxN],next[MaxN],a[MaxN],b[MaxN],c[MaxN];
int A,B,C,N;
void read()
{
scanf("%d%d%d%d",&N,&A,&B,&C);
}
void solve()
{
int i,j;
for(i=1;i<N;i++) next[i]=i;
for(i=1;i<N;i++)
{
if(A<B)
{
a[i]=A; b[i]=B; c[i]=C;
}
else
{
a[i]=B; b[i]=A; c[i]=C;
}
A = ( (long long) A * (i+1) ) % N;
B = ( (long long) B * (i+1) ) % N;
C = ( (long long) C * (i+1) ) % N;
}
A=a[N-1]; B=b[N-1]; C=c[N-1];
for(i=A;i<=B;i++)
cul[i]=C, next[i]=B;
for(j=N-2;j>=1;j--)
{
A=a[j]; B=b[j]; C=c[j];
i=A;
while(i<=B)
{
if(next[i]==i)
{
if(!cul[i])
cul[i]=C;
next[i]=B;
i++;
}
else
i=next[i];
}
}
}
void write()
{
int i;
for(i=1;i<N;i++)
printf("%d\n",cul[i]);
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
read();
solve();
write();
fclose(stdin);
fclose(stdout);
return 0;
}