1 条题解

  • 0
    @ 2024-12-24 9:14:34

    C++ :

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    #include <sstream>
    #include <cstring>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <queue>
    #include <stack>
    #include <map>
    #include <set>
    #include <numeric>
    #include <cassert>
    #include <complex>
    #include <ctime>
    
    #define clr(x,a) memset(x,a,sizeof(x))
    #define sz(x) (int)x.size()
    #define rep(i,n) for(int i=0;i<n;i++)
    #define repeat(i, a, b) for(int i=(a);i<=(b);i++)
    #define all(v) (v).begin(), (v).end()
    #define Unique(store) store.resize(unique(store.begin(),store.end())-store.begin())
    #define X first
    #define Y second
    
    
    
    using namespace std;
    int solve(int a,int b,int c,int d) {
        set< pair<int,int> >se;
        se.insert(make_pair(a,b));
        while (a!=b) {
            if (b>a)
                b-=a;
            else a-=b;
            se.insert(make_pair(a,b));
        }
        se.insert(make_pair(a,b));
        while (c!=d) {
            pair<int,int>cur=make_pair(c,d);
            if (se.count(cur)) return c+d;
            if (d>c) d-=c;
            else c-=d;
        }
        pair<int,int>cur=make_pair(c,d);
        if (se.count(cur)) return c+d;
        return -1;
    }
    int main () {
        //freopen("in.txt","r",stdin);
        //freopen("out.txt","w",stdout);
        int a,b,c,d;
        while (scanf("%d %d %d %d",&a,&b,&c,&d)!=EOF) {
            //assert(a<=1e5&&b<=1e5&&c<=1e5&&d<=1e5);
            //cout<<"go "<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
            printf("%d\n",solve(a,b,c,d));
        }
        return 0;
    }
    
    
    • 1

    信息

    ID
    640
    时间
    2000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者