题解 P1888 【三角函数】

看了大佬们各种碉堡的算法(什么欧几里得算法之类),本蒟蒻只能送上自己的蒟蒻快排代码…………

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int a[5];//储存边
void qsort(int l,int r)
{
    int mid=(l+r)/2,i=l,j=r;
    mid=a[mid];//取中间数,本蒟蒻不会用随机快排= =
    while(i<=j)
    {
        while(a[i]<mid)//在左半部分寻找比中间数大的数
            i++;
        while(a[j]>mid)//在右半部分寻找比中间数小的数
            j--;
        if(i<=j)//保证不越界
        {
            swap(a[i],a[j]);//swap交换两个数
            i++;//继续找
            j--;
        }
    }
    if(l<j)//若没有到两数的边界就递归搜左右区间
        qsort(l,j);
    if(i<r)
        qsort(i,r);
}
int main()
{
    int i,mi,ma;
    scanf("%d%d%d",&a[1],&a[2],&a[3]);//输入
    qsort(1,3);//快排来排序
    mi=a[1];
    ma=a[3];
    for(i=2;i<=mi;i++)//直接暴力枚举因数来约分,欧几里得算法是不存在的= =
        if(mi%i==0&&ma%i==0)
        {
            mi/=i;
            ma/=i;
        }
    printf("%d/%d",mi,ma);
    return 0;
}

发表于 2017-10-11 15:40:19 in 题解