Pagini recente » Cod sursa (job #1511316) | Cod sursa (job #1031030) | Cod sursa (job #944686) | Cod sursa (job #605399) | Cod sursa (job #2595877)
#include <cstdio>
#include <algorithm>
using namespace std;
const int Lim = 19000000;
int u = Lim - 1;
char buf[Lim];
void Next () {
if (++u == Lim)
std::fread(buf, 1, Lim, stdin), u = 0;
}
void Get (int &x) {
x = 0;
for (; buf[u] < '0' || buf[u] > '9'; Next());
for (x = 0; buf[u] >= '0' && buf[u] <= '9'; Next())
x = x * 10 + buf[u] - '0';
}
int n,l,r,v[1000005],a[1000005],b[1000005],c[1000005],ans[1000005];
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
Get(n),Get(a[1]),Get(b[1]),Get(c[1]);
for(int i=2;i<n;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;
}
for(int i=n-1;i>0;i--){
l=min(a[i],b[i]);
r=max(a[i],b[i]);
for(int j=l;j<=r;j++){
if(!ans[j]){
ans[j]=c[i];
v[j]=r;
}
else{
j=v[j];
}
}
}
for(int i=1;i<n;i++){
printf("%d \n",ans[i]);
}
return 0;
}