Pagini recente » Cod sursa (job #1900424) | Cod sursa (job #1288634) | Cod sursa (job #2699355) | Cod sursa (job #3227055) | Cod sursa (job #1652758)
#include<cstdio>
#include<vector>
#define INF 2000000000
int n,m,qx,qy,ox,oy,modx,mody,a,b,i,j,cl,vmax,x[1010][1010],vx[1010],vy[1010],v[1010][1010],sol[700000],y[1010][1010];
FILE *f,*g;
int opx(int a){
return ( a * a + ox ) % modx;
}
int opy(int a){
return ( a * a + oy ) % mody;
}
void calc(int a,int b){
x[a][b] = - 1;
int aa = opx(a);
int bb = opy(b);
if( x[aa][bb] == INF )
calc(aa,bb);
if( x[aa][bb] != -1 )
x[a][b] = x[aa][bb] + 1;
}
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
int main(){
f=fopen("robotei.in","r");
g=fopen("robotei.out","w");
fscanf(f,"%d%d%d%d%d%d%d%d",&n,&m,&qx,&qy,&modx,&mody,&ox,&oy);
for(i=0;i<n;i++){
a = opx(i);
vx[a] ++;
a = opy(i);
vy[a] ++;
}
for(i=0;i<modx;i++){
for(j=0;j<mody;j++){
v[i][j] = vx[i] * vy[j];
x[i][j] = INF;
}
}
x[qx][qy] = 0;
for(i=0;i<modx;i++){
for(j=0;j<mody;j++){
if( x[i][j] == INF )
calc(i,j);
}
}
a = opx(qx);
b = opy(qy);
cl = x[a][b] + 1;
for(i=0;i<modx;i++){
for(j=0;j<mody;j++){
if( x[i][j] != -1 && x[i][j] < m ){
y[i][j] = 1 + ( m - 1 - x[i][j] ) / cl ;
sol[ y[i][j] ] += v[i][j];
}
}
}
sol[ y[a][b] ]--;
sol[ y[a][b]+1 ]++;
for(i=0;i<=m;i++){
if( sol[i] != 0 ){
fprintf(g,"%d %d\n",i,sol[i]);
}
}
fclose(f);
fclose(g);
return 0;
}