Pagini recente » Cod sursa (job #771973) | Cod sursa (job #93204) | Cod sursa (job #1408682) | Cod sursa (job #2375333) | Cod sursa (job #1837326)
#include <cstdio>
#define MAX_N 1000000
using namespace std;
int a[MAX_N+5], b[MAX_N+5], c[MAX_N+5], t[MAX_N+5], ans[MAX_N+5];
int nextColour(int x){
if (t[x]==x)
return x;
return t[x]=nextColour(t[x]);
}
int main(){
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
int n, i, pos, aux;
scanf("%d%d%d%d", &n, &a[1], &b[1], &c[1]);
if (a[1]>b[1])
aux=a[1], a[1]=b[1], b[1]=aux;
t[1]=1;
for (i=2; i<=n-1; i++){
a[i]=(1LL*a[i-1]*i)%n;
b[i]=(1LL*b[i-1]*i)%n;
if (a[i]>b[i])
aux=a[i], a[i]=b[i], b[i]=aux;
c[i]=(1LL*c[i-1]*i)%n;
t[i]=i;
}
for (i=n-1; i>=1; i--){
pos=nextColour(a[i]);
while (pos<=b[i] && pos!=0){
ans[pos]=c[i];
t[pos]=b[i]+1;
pos=nextColour(pos+1);
}
}
for (i=1; i<=n-1; i++)
printf("%d\n", ans[i]);
return 0;
}