Pagini recente » Cod sursa (job #1696204) | Cod sursa (job #2080712) | Cod sursa (job #2863898) | Cod sursa (job #1194335) | Cod sursa (job #36896)
Cod sursa(job #36896)
#include<stdio.h>
#define Lmax 2000002
long hold[Lmax],hols[Lmax];
int main()
{
long long M,M1,N,L,R,i,X,Y,Z,V,timp,pozant,poz,cnt,nr,nrd=0,dir;
freopen("toys.in","r",stdin);
freopen("toys.out","w",stdout);
scanf("%lld%lld%lld",&N,&L,&M);
scanf("%lld%lld%lld%lld%lld",&pozant,&X,&Y,&Z,&V);
hols[pozant]=1;
for(i=2;i<=N;i++)
{
poz=( X * pozant + Y * (i-1) ) % ( L-1 ) +1 ;
dir=( Z * pozant + V * (i-1) ) % 2;
if( dir == 0 )
hold[ poz ] ++;
else
hols[ poz ] ++;
if( !dir ) nrd ++;
pozant=poz;
}
if( M % N == 0 )
{
for( i=L;i;i--)
if( hols[i] )
break;
timp= M/N*2*L+ i;
}
else
{
M1=(M/N)*N;
R=M-M1;
if( R <= nrd )
{
nr= nrd-R+1;
cnt=0;
for(i=1;i<=L&&cnt<nr;i++)
if( hold[i]) cnt+= hold[i];
timp=M1/N*2*L+L+(L-i+1);
}
else
{
R-=nrd;
cnt=0;
for(i=1;i<=L&&cnt<R;i++)
if( hols[i] ) cnt += hols[i];
timp=M1/N*2*L+L+L+i-1;
}
}
printf("%lld\n",timp);
return 0;
}