Pagini recente » Cod sursa (job #2141229) | Cod sursa (job #1605071) | Cod sursa (job #1592291) | Cod sursa (job #1878980) | Cod sursa (job #1984250)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("curcubeu.in");
ofstream out ("curcubeu.out");
struct transformation{
int a;
int b;
int c;
};
int const nmax = 1000000;
transformation tr[5 + nmax];
int nxt[5 + nmax];
int v[5 + nmax];
int jump(int a){
if(nxt[a]){
nxt[a] = jump(nxt[a]);
return nxt[a];
} else
return a;
}
void unite(int a ,int b ,int c){
if(b < a)
swap(a , b);
while(a <= b){
a = jump(a);
if(a <= b){
v[a] = c;
nxt[a] = b + 1;
a++;
}
}
}
int main()
{
int n , a , b , c;
in>>n>>a>>b>>c;
tr[1] = {a , b , c};
for(int i = 2 ; i < n ;i++){
tr[i].a = (1LL * tr[i - 1].a * i) % n;
tr[i].b = (1LL * tr[i - 1].b * i) % n;
tr[i].c = (1LL * tr[i - 1].c * i) % n;
}
for(int i = n - 1 ;0 < i ;i--){
unite(tr[i].a , tr[i].b , tr[i].c );
}
for(int i = 1 ; i < n ;i++){
out<<v[i]<<'\n';
}
return 0;
}