最大比例

 

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 110;
typedef long long ll;
struct Node
{
    long long x, y;
    ll gcd(ll a, ll b)
    {
        if (b == 0)return a;
        else gcd(b, a % b);
    }
    void setvalue(ll a, ll b)
    {
        ll u = gcd(a, b);
        x = a / u;
        y = b / u;
    }
}node[maxn];
ll a[maxn];
//一个数n的n次能够得到a还能得到b,该算法返回的就是n
ll mygcd(ll a, ll b)
{
    if (a == b)return a;
    return mygcd(min(b / a, a), max(b / a, a));
}
bool cmp(Node a, Node b)
{
    if (a.x != b.x)
        return a.x < b.x;
    else
        return a.y < b.y;
}
int main(void)
{
    ios::sync_with_stdio;
    int n; cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        //cout << a[i] << " ";
    }

    int cnt = 0;
    sort(a, a + n);
    for (int i = 0; i < n - 1; i++)
    {
        if (a[i] == a[i + 1])continue;
        node[cnt++].setvalue(a[i], a[i + 1]);
    }
    sort(node, node + cnt, cmp);
    ll up = node[0].y;
    ll down = node[0].x;
    /*for (int i = 0; i < cnt; i++)
    {
        cout << node[i].x << "   " << node[i].y << endl;
    }*/
    for (int i = 1; i < cnt; i++)
    {
        up = mygcd(up, node[i].y);
        down = mygcd(down, node[i].x);
    }
    cout << up << "/" << down;
    return 0;
}

 

posted @ 2021-04-14 14:20  loliconsk  阅读(60)  评论(0)    收藏  举报