Cod sursa(job #3322182)

Utilizator Andreea1501013Andreea Andreea1501013 Data 13 noiembrie 2025 08:30:45
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

using namespace std;
int a[1000005], b[1000005], c[1000005], sar[1000005], sol[1000005];
int main()
{
    ifstream cin("curcubeu.in");
    ofstream cout("curcubeu.out");

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int N;
    cin>>N>>a[1]>>b[1]>>c[1];
    for(int 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;
    }
    for(int i=N-1;i>=1;i--)
    {
        /// mergem invers prin numere penteru a nu mai putea schimba ce am facut deja si sa nu facem operatii degeaba
        for(int x=a[i];x<=b[i];x++)
        {
            if(sol[x]!=0)
            {
                x=sar[x];
                continue;
            }
            ///le completez daca nu sunt completate
            sol[x]=c[i];
            /// daca mai ajung acolo sar
            sar[x]=b[i]+1;
        }
    }
    for(int i=1;i<N;i++)
    {
        cout<<sol[i]<<'\n';
    }
    return 0;
}