Pagini recente » Cod sursa (job #351196) | Cod sursa (job #953759) | Cod sursa (job #1648044) | Cod sursa (job #2077168) | Cod sursa (job #363516)
Cod sursa(job #363516)
#include<stdio.h>
#define nmax 1000002
int n;
long long a[nmax],b[nmax],c[nmax],v[nmax],t[nmax];
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%d%lld%lld%lld",&n,&a[1],&b[1],&c[1]);
int k,j,i;
if(a[1]>b[1])
a[1]^=b[1]^=a[1]^=b[1];
for(i=2;i<n;i++)
{
a[i]=(a[i-1]*i)%n;
b[i]=(b[i-1]*i)%n;
if(a[i]>b[i])
a[i]^=b[i]^=a[i]^=b[i];
c[i]=(c[i-1]*i)%n;
}
for(i=1;i<n;i++)
t[i]=i+1;
for(i=n-1;i>=1;i--)
{
j=a[i];
while(j<=b[i])
{
if(!v[j])
v[j]=c[i];
k=j;
j=t[j];
t[k]=b[i]+1;
}
}
for(i=1;i<n;i++)
printf("%lld\n",v[i]);
return 0;
}