題意:給最簡分數排序
分析:pair的基本使用,用pair來存一下分數,把分子分母最大公約數爲1的加入數組,然後排序一下就好了。
Code:
<span style="font-family:Microsoft YaHei;font-size:18px;">#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps = 1e-6;
const int maxn = 160+5;
pair<int, int> p[maxn*maxn];
int n;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a%b);
}
bool cmp(pair<int, int> p1, pair<int, int> p2) {
return p1.first*1.0/p1.second - p2.first*1.0/p2.second < (-eps);
}
int main(){
while(scanf("%d", &n) != EOF) {
int cnt = 0;
for(int i = 1; i <= n; i++)
for(int j = 0;j <= i; j++)
if(gcd(i, j) == 1)
p[cnt++] = make_pair(j, i);
sort(p, p+cnt, cmp);
for(int i = 0; i < cnt; i++)
printf("%d/%d\n", p[i].first, p[i].second);
}
return 0;
}
</span>