Pagini recente » Cod sursa (job #765046) | Cod sursa (job #1432137) | Cod sursa (job #1772165) | Cod sursa (job #2976925) | Cod sursa (job #2110014)
#include <bits/stdc++.h>
using namespace std;
ifstream f("kdrum.in");
ofstream g("kdrum.out");
int n,m,k,x1,y1,x2,y2;
int d[12002];
int a[52][52];
int diri[]={-1,0,1,0};
int dirj[]={0,1,0,-1};
int ver(int i,int j){
return (i>0&&i<=n&&j>0&&j<=m);
}
int cmmdc(int a,int b){
if(b==0)return a;
return cmmdc(b,a%b);
}
int lee(){
deque<int> di,dj,dval,dist;
di.push_back(x1);
dj.push_back(y1);
dval.push_back(1);
dist.push_back(1);
while(!di.empty()){
int ii=di.front();
int jj=dj.front();
int vv=dval.front();
int dd=dist.front();
if(ii==x2&&jj==y2&&vv==k)return dd;
di.pop_front();
dj.pop_front();
dval.pop_front();
dist.pop_front();
for(int dir=0;dir<=3;dir++){
int ni=ii+diri[dir],nj=jj+dirj[dir];
if(ver(ni,nj)){if(cmmdc((k/vv),a[ni][nj])>1){
di.push_front(ni);
dj.push_front(nj);
dval.push_front(vv*cmmdc(k/vv,a[ni][nj]));
dist.push_back(dd+1);
}else
{
di.push_back(ni);
dj.push_back(nj);
dval.push_back(vv);
dist.push_back(dd+1);
}
}
}
}
}
void rez(){
int ck=k,i=2;
if(k>1)
while(ck!=1){
while(ck%i==0){
ck/=i;
d[i]++;
}i++;
}
}
void citire(){
f>>n>>m>>k>>x1>>y1>>x2>>y2;
rez();
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){
int x;
f>>x;
if(x==0)a[i][j]=-1;
else {
a[i][j]=cmmdc(k,x);
}
}
}
int main(){
citire();
rez();
g<<lee()+1;
return 0;
}