Pagini recente » Cod sursa (job #2924182) | Cod sursa (job #1090023) | Cod sursa (job #1899933) | Cod sursa (job #1585608) | Cod sursa (job #3164332)
#include <fstream>
#include <vector>
using namespace std;
const int Vmax = 1000001;
int n, colorat[Vmax], nxt[Vmax];
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
vector<int> A;
vector<int> B;
vector<int> C;
int recurent(int a, int i){
if(i==1)
return (a*i)%n;
else
return (recurent(a, i-1) * i)%n;
}
int find_next(int e){
if(!colorat[nxt[e]])
return nxt[e];
int nxt_de_nxt = find_next(nxt[e]);
nxt[e] = nxt_de_nxt;
return nxt_de_nxt;
}
int main()
{
fin>>n;
int a, b, c;
fin>>a>>b>>c;
A.push_back(a);
B.push_back(b);
C.push_back(c);
for(int i=1;i<n;i++)
nxt[i] = i+1;
for(int i=2;i<n;i++){
int a_2, b_2, c_2;
a=recurent(a, i); A.push_back(a);
b=recurent(b, i); B.push_back(b);
c=recurent(c, i); C.push_back(c);
}
for(int i=A.size();i>=0;i--){
int j = A[i];
int k = B[i];
while(j<=k){
if(!colorat[j])
colorat[j] = C[i];
j=find_next(j);
}
}
for(int i=1;i<n;i++)
fout<<colorat[i]<<'\n';
return 0;
}