题目描述
给出 n个分数,请你把他们由小到大输出!
输入格式
第一行是一个整数n ,接下来的n 行,表示有n 个分数,分数以形如a/b 的形式给出。
输出格式
输出由小到大的 n个分数(要求输出每个分数都应是最简分数)
样例数据
input
5
2/3
5/6
3/8
4/10
4/7
output
3/8
2/5
4/7
2/3
5/6
数据规模与约定
$0\leq a,b \leq 10^9$
时间限制:$1 \text{s}$
空间限制:$256 \text{MB}$
#include<bits/stdc++.h>
using namespace std;
struct stu{
int x;
int y;
double z;
};
int m(stu i,stu j){
return i.z<j.z;
}
int main(){
stu f[1000];
int n;
cin>>n;
for(int i=0;i<n;i++){
scanf("%d/%d",&f[i].x,&f[i].y);
f[i].z=f[i].x*1.0/f[i].y;
}
sort(f,f+n,m);
for(int i=0;i<n;i++){
int c=__gcd(f[i].x,f[i].y);
f[i].x/=c;
f[i].y/=c;
cout<<f[i].x<<"/"<<f[i].y<<endl;
}
return 0;
}