Pagini recente » Cod sursa (job #1215588) | Cod sursa (job #1386651) | Cod sursa (job #2899205) | Cod sursa (job #749585) | Cod sursa (job #937983)
Cod sursa(job #937983)
#include <cassert>
#include <cstdio>
const int dim=1000005;
int a[dim],b[dim],c[dim],u[dim],sol[dim];
int main()
{
int n=0,i=0,j=0,aux=0;
assert(freopen("curcubeu.in","r",stdin));
assert(freopen("curcubeu.out","w",stdout));
assert(scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]));
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;
if (a[i]>b[i])
{
aux=a[i];
a[i]=b[i];
b[i]=aux;
}
}
--n;
for (i=n; i>0; --i)
{
j=a[i];
while (j<=b[i])
if (sol[j]==0)
{
sol[j]=c[i];
u[j]=b[i]+1;
++j;
}
else
j=u[j];
}
for (i=1; i<=n; ++i)
assert(printf("%d\n",sol[i]));
return 0;
}