bushi这啥???


请看左上角和左下角
顺便问一下为什么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;
}
1 个赞