Cod sursa(job #197951)

Utilizator CezarMocanCezar Mocan CezarMocan Data 7 iulie 2008 13:31:21
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 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]=(a[i-1]*i)%n;
    b[i]=(b[i-1]*i)%n;
    c[i]=(c[i-1]*i)%n;
    printf("%d %d %d\n",a[i],b[i],c[i]);    
    p[i]=i+1;
    }
for (i=n-1;i>=1;i--)
    {
    l=a[i];
    u=b[i];
    if (a[i]>b[i])    
        {
        l=b[i];
        u=a[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;    
}