Pagini recente » Cod sursa (job #1184458) | Cod sursa (job #1947617) | Cod sursa (job #1392098) | Cod sursa (job #2979018) | Cod sursa (job #179806)
Cod sursa(job #179806)
#include<cstdio>
#define m(a,b) (a)<(b)?(a):(b)
#define M(a,b) (a)>(b)?(a):(b)
const int max=1000000;
int n,a[max],b[max],c[max],left,i,j,k,p[max],viz[max],fin[max];
long long x,y;
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d %lld %lld %d",&n,&x,&y,&c[1]);
a[1]=m(x,y);
b[1]=M(x,y);
p[1]=1;
for(i=2;i<n;++i)
{
x=((long long)a[i-1]*i)%n;
y=((long long)b[i-1]*i)%n;
a[i]=m(x,y);
b[i]=M(x,y);
c[i]=((long long)c[i-1]*i)%n;
p[i]=i;
}
left=n-1;
for(i=n-1;i>0 && left;--i)
{
for(j=1;j<=left && p[j]<=b[i];j++)
if(p[j]<=a[i])
{
viz[p[j]]=1;
fin[p[j]]=c[i];
}
j=0;
for(k=1;k<=left;k++)
if(!viz[p[k]])
p[++j]=p[k];
left=j;
}
for(i=1;i<n;i++)
printf("%d\n",fin[i]);
fclose(stdout);
return 0;
}