
请看左上角和左下角
顺便问一下为什么80
代码:
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b) {
return b==0?a:gcd(b,a%b);
}
int main(){
int n,m;
cin>>n>>m;
vector<vector<int>>a(n,vector<int>(m));
for(int i=0;i<n;++i)for(int j=0;j<m;++j)cin>>a[i][j];
int x,y;
cin>>x>>y;
x--;y--;
if(a[x][y]==1){
cout<<0<<endl;
return 0;
}
int ans=0;
while(1){
vector<vector<int>>b=a;
bool bol=false;
for(int i=0;i<n;++i){
for(int j=0;j<m;++j){
int g=a[i][j];
if(i>0) g=gcd(g,a[i-1][j]);
if(i<n-1)g=gcd(g,a[i+1][j]);
if(j>0) g=gcd(g,a[i][j-1]);
if(j<m-1)g=gcd(g,a[i][j+1]);
if(g!=a[i][j])bol=true;
b[i][j]=g;
}
}
if(!bol) {
cout<<-1<<endl;
return 0;
}
ans++;
a=b;
if(a[x][y]==1){
cout<<ans<<endl;
return 0;
}
}
return 0;
}