Cod sursa(job #197954)

Utilizator CezarMocanCezar Mocan CezarMocan Data 7 iulie 2008 13:36:22
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

using namespace std;

long n,i,j,a[1000100],b[1000100],c[1000100],p[1000100],x[1000100],l,u,t;

int main(){
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);    
scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);
//printf("%d %d %d\n",a[1],b[1],c[1]);
p[1]=2;
for (i=2;i<n;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;
    p[i]=i+1;
    }
for (i=1;i<n;i++)
    if (a[i]>b[i])
        {
        l=a[i];a[i]=b[i];b[i]=l;    
        }    
for (i=n-1;i>=1;i--)
    {
    l=a[i];
    u=b[i];
    j=l;
    while (j<=u)
        {
        if (x[j]==0)
            x[j]=c[i];
        t=j;
        j=p[j];    
        p[t]=u+1;
        }
    }
for (i=1;i<n;i++)
    printf("%d\n",x[i]);
return 0;    
}