Pagini recente » Cod sursa (job #1688144) | Cod sursa (job #1676289) | Cod sursa (job #1598647) | Cod sursa (job #305935) | Cod sursa (job #252984)
Cod sursa(job #252984)
#include <stdio.h>
#define LL (long long)
#define maxN 1000005
struct st{int a,b,c;}v[maxN];
int N,i,ax,poza,pozb,f[maxN],c[maxN];
int main(){
freopen("curcubeu.in","r",stdin); freopen("curcubeu.out","w",stdout);
scanf("%d %d %d %d",&N,&v[1].a,&v[1].b,&v[1].c);
for (i=2;i<N;++i){
v[i].a=LL(v[i-1].a*i)%N;
v[i].b=LL(v[i-1].b*i)%N;
v[i].c=LL(v[i-1].c*i)%N;
if (v[i].a>v[i].b){ax=v[i].a;v[i].a=v[i].b;v[i].b=ax;}
}
for (i=0;i<N;++i)f[i]=i+1;
for (i=N-1;i>0;--i){
poza=v[i].a;pozb=v[i].b;
while (poza <= pozb){
if (!c[poza])c[poza]=v[i].c;
ax=poza;
poza=f[poza];
if (pozb > f[ax])f[ax]=pozb;
}
}
for (i=1;i<N;++i)printf("%d\n",c[i]);
return 0;
}