题解 P1888 【三角函数】

Iowa_BattleShip

2017-10-11 15:40:19

Solution

看了大佬们各种碉堡的算法(什么欧几里得算法之类),本蒟蒻只能送上自己的蒟蒻快排代码………… ```cpp #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; } ```