Pagini recente » Cod sursa (job #1906271) | Cod sursa (job #643468) | Cod sursa (job #619770) | Cod sursa (job #383412) | Cod sursa (job #1680699)
#include <cstdio>
#include <algorithm>
#define nmax 1000100
using namespace std;
int n,a[nmax],b[nmax],c[nmax];
int t[nmax],v[nmax];
int main()
{
int i,j,k,p;
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d %d %d %d",&n,&a[1],&b[1],&c[1]);
for (i=2;i<n;i++) {
a[i]=(1LL*a[i-1]*i)%n;
b[i]=(1LL*b[i-1]*i)%n;
c[i]=(1LL*c[i-1]*i)%n;
}
for (i=1;i<=n-1;i++)
t[i]=-1;
for (i=n-1;i>=1;i--) {
if (a[i]>b[i])
swap(a[i],b[i]);
j=a[i];
if (j==0)
j++;
while (j<=b[i]) {
v[j]=c[i];
if (t[j]<0)
j++;
else
j=t[j];
}
k=a[i];
if (k==0)
k++;
while (k<=b[i]) {
p=t[k];
t[k]=j;
if (p==-1)
k++;
else
k=p;
}
}
for (i=1;i<n;i++)
printf("%d\n",v[i]);
return 0;
}