Pagini recente » Cod sursa (job #1605271) | Cod sursa (job #1942544) | Cod sursa (job #474717) | Cod sursa (job #2374162) | Cod sursa (job #36907)
Cod sursa(job #36907)
using namespace std;
#include<fstream>
#include<stdio.h>
#define nmax 2000005
int d1[nmax];
int d0[nmax];
int main()
{
//FILE *fin=fopen("toys.in","r"),
// *fout=fopen("toys.out","w");
int n,m,l,s,x,y,v,z,crt;
int i,j,k;
memset(d1,0,sizeof d1);
memset(d0,0,sizeof d0);
//fscanf(fin,"%d%d%d",&n,&l,&m);
//fscanf(fin,"%d%d%d%d%d",&s,&x,&y,&z,&v);
n=5;
l=101;
m=100;
x=y=z=v=s=1;
long long ud,ad;
long long ut,at;
ud=(long long)s;
ut=1;
d1[s]++;
for(i=2;i<=n;i++)
{
ad=(ud*(long long)x + (long long)y* ((long long)i-1))%((long long)l-1)+1;
at=(ud*(long long)z + (long long)v* ((long long)i-1))%2;
if(at)
d1[(int)ad]++;
else
d0[(int)ad]++;
ut=at;
ud=ad;
}
long long sol;
int ind;
if(m%n==0)
{
sol=(long long)2*l*(m/n-1);
i=2000001;
while(i>0 && d1[i]==0) i--;
if(i)
{
sol+=(long long)i+2*l;
}
else
{
i=1;
while( d0[i]==0 ) i++;
sol+=(long long)l*2-i;
}
}
else
{
sol=(long long)2*l*(m/n);
ind=m%n;
crt=0;
i=2000002;
while(i>0 && crt<ind)
{
i--;
crt+=d0[i];
}
if(crt>=ind)
{
sol+=(long long)l*2-i;
}
else
{
i=0;
while( crt<ind)
{
i++;
crt+=d1[i];
}
sol+=(long long)i+2*l;
}
}
fprintf(fout,"%lld\n",sol);
fclose(fin);
fclose(fout);
return 0;
}