Pagini recente » Cod sursa (job #853046) | Cod sursa (job #2783060) | Cod sursa (job #85515)
Cod sursa(job #85515)
#include <stdio.h>
#include <string>
#define maxn 1000010
#define min(a,b) (a < b ? a : b)
#define max(a,b) (a > b ? a : b)
int n,x,y,z;
int a[maxn],b[maxn],c[maxn],next[maxn],s[maxn];
int drum(int x)
{
if (s[x]!=0)
{
next[x]=drum(next[x]);
return next[x];
}
return x;
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d %d %d %d ",&n,&a[1],&b[1],&c[1]);
int i,j;
for (i=2;i<n;i++) a[i]=(a[i-1]*i)%n,b[i]=(b[i-1]*i)%n,c[i]=(c[i-1]*i)%n;
for (i=1;i<=n;i++) next[i]=i+1;
for (i=n-1;i>0;i--)
{
x=min(a[i],b[i]);
y=max(a[i],b[i]);
if (s[x]==0) s[x]=c[i];
for (j=drum(x);j<=y;j=z)
{
s[j]=c[i];
z=drum(j);
next[j]=next[y];
}
next[x]=next[y];
}
for (i=1;i<n;i++) printf("%d\n",s[i]);
return 0;
}