Pagini recente » Cod sursa (job #2255738) | Cod sursa (job #2063646) | Cod sursa (job #1462) | Cod sursa (job #3264633) | Cod sursa (job #2316251)
#include <iostream>
#include <fstream>
#define nmx 1000005
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int n,i,j,nr,k,a,b,c,x;
int r[nmx],t[nmx],A[nmx],B[nmx],C[nmx];
int tati(int n)
{
if(t[n]==n) return n;
t[n]=tati(t[n]);
return t[n];
}
int main() {
fin>>n>>A[1]>>B[1]>>C[1];
if(A[1]>B[1])
{ A[1]^=B[1]; B[1]^=A[1]; A[1]^=B[1]; }
for(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;
if(A[i]>B[i])
{ A[i]^=B[i]; B[i]^=A[i]; A[i]^=B[i]; }
}
for(i=n-1;i>=1;i--)
{
a=A[i];
b=B[i];
if(r[b+1]) t[i]=tati(b+1);
else t[i]=i;
for(j=a;j<=b;)
{
if(r[j])
{
x=tati(r[j]);
j=B[x]+1;
t[x]=t[i];
}
else
{ r[j]=i; j++; }
}
}
for(i=1;i<n;i++)
fout<<C[r[i]]<<"\n";
}