Cod sursa(job #2310018)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 30 decembrie 2018 14:21:20
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");

const int NMAX = 1000005;
int a[NMAX],b[NMAX],c[NMAX],v[NMAX];
int next[NMAX];

int main()
{
    long long N;
    int a1,b1,c1;
    fin >> N >> a1 >> b1 >> c1;
    a[1]=a1;
    b[1]=b1;
    c[1]=c1;
    if(a[1]>b[1]) swap(a[1],b[1]);
    for(int i=2;i<=N-1;i++)
    {
        a[i]=(1LL*a[i-1]*i)%N;
        b[i]=(1LL*b[i-1]*i)%N;
        c[i]=(1LL*c[i-1]*i)%N;
        if(a[i]>b[i]) swap(a[i],b[i]);
    }
    long long A,B;
    for(int i=N-1;i>=1;i--)
    {
        A=a[i];
        B=b[i];
        while(A<=B)
        {
            if(v[A]==0)
            {
                v[A]=c[i];
                next[A]=b[i]+1;
                A++;
            }
            else A=next[A];
        }
    }
    for(int i=1;i<=N-1;i++)
    {
        fout << v[i] << '\n';
    }
    return 0;
}