Pagini recente » Cod sursa (job #3210732) | Cod sursa (job #1165352) | Cod sursa (job #878666) | Cod sursa (job #715894) | Cod sursa (job #1460593)
#include<cstdio>
#include<algorithm>
#define NMAX 1000000
int a[NMAX+1],b[NMAX+1],c[NMAX+1];
struct casa{int culoare,urmator;};
casa v[NMAX+1];
int pp;
int URM(int x)
{
if(v[x].urmator==-1)
{
return x;
}
v[x].urmator=URM(v[x].urmator);
return v[x].urmator;
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int n;
scanf("%d %d %d %d ",&n,&a[1],&b[1],&c[1]);
v[0].urmator=v[1].urmator=-1;
for(int i=2;i<=n-1;i++)
{
a[i]=((long long)a[i-1]*i)%n;
b[i]=((long long)b[i-1]*i)%n;
c[i]=((long long)c[i-1]*i)%n;
v[i].urmator=-1;
}
pp=n;
for(int i=n-1;i>=1 && pp!=0;i--)
{
int st=std::min(a[i],b[i]),dr=std::max(a[i],b[i]);
if(st!=0 && dr!=0)
{
dr=URM(dr);
while(dr>=st)
{
v[dr].culoare=c[i];
v[dr].urmator=st-1;
pp--;
dr--;
dr=URM(dr);
}
}
}
for(int i=1;i<=n-1;i++)
printf("%d\n",v[i].culoare);
fclose(stdin);
fclose(stdout);
return 0;
}