Pagini recente » Cod sursa (job #134722) | Cod sursa (job #2431381) | Cod sursa (job #575161) | Cod sursa (job #1841228) | Cod sursa (job #360497)
Cod sursa(job #360497)
#include <cstdio>
#define lm 1000010
int a[lm], b[lm], c[lm], t[lm], n, v[lm];
int find (int x)
{
int c, i;
for (i=x; t[i]>0; i=t[i]);
for (; t[x]>0;)
{
c=t[x];
t[x]=i;
x=c;
}
return i;
}
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,k;
for (i=2; i<n; i++)
{
a[i]=(long long) a[i-1]*i%n;
b[i]=(long long) b[i-1]*i%n;
if (a[i]>b[i])
{
j=a[i];
a[i]=b[i];
b[i]=j;
}
c[i]=(long long) c[i-1]*i%n;
}
for (j=n-1; j>0; j--)
{
i = find(a[j]);
for (; i<=b[j];)
{
v[i] = c[j];
k=i;
i=find(i+1);
t[k]=i;
}
//for (i=1; i<n; i++) printf("%d ",t[i]);
//printf("\n");
}
for (i=1; i<n; i++)
printf("%d\n", v[i]);
}