Cod sursa(job #185866)

Utilizator savimSerban Andrei Stan savim Data 26 aprilie 2008 11:50:08
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#define maxl 1000010

int i,j,k,n;
int a[maxl],b[maxl],c[maxl],d[maxl],v[maxl];

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=1; i<=n-1; i++) d[i]=i+1;    
    
    for (i=2; i<=n-1; i++)
    {
        a[i]=(a[i-1]*i)%n;
        b[i]=(b[i-1]*i)%n;
        c[i]=(c[i-1]*i)%n;
        
        if (a[i]>b[i]) { k=a[i]; a[i]=b[i]; b[i]=k; }
    }        
    
    for (i=n-1; i>=1; i--)
    {
        j=a[i];
        while (j<=b[i])
        {
              if (v[j]==0) v[j]=c[i];
              
              k=j;
              j=d[j];
              
              d[k]=b[i]+1;
        }
    }
    
    for (i=1; i<=n-1; i++) printf("%d\n",v[i]);
        
    return 0;    
}