Pagini recente » Cod sursa (job #323329) | Cod sursa (job #1812788) | Cod sursa (job #2754521) | Cod sursa (job #1155707) | Cod sursa (job #1393427)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[1000002],b[1000002],c[1000002],i,j,aux,urm[1000002],st,dr,ans[1000002];
int MIN(int x,int y)
{
if(x<y)
{
return x;
}
return y;
}
int MAX(int x,int y)
{
if(x>y)
{
return x;
}
return y;
}
int main()
{
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]=a[i-1]*i;
a[i]%=n;
b[i]=b[i-1]*i;
b[i]%=n;
c[i]=c[i-1]*i;
c[i]%=n;
}
for(i=n-1;i>0;i--)
{
st=MIN(a[i],b[i]);
dr=MAX(a[i],b[i]);
for(j=st;j<=dr;j++)
{
if(!urm[j])
{
ans[j]=c[i];
urm[j]=dr+1;
}
else
{
aux=urm[j];
if(urm[j]<dr+1)
{
urm[j]=dr+1;
}
j=aux-1;
}
}
}
for(i=1;i<n;i++)
{
printf("%d\n",ans[i]);
}
}