Ordered Fractions--最大公約數+pair

題意:給最簡分數排序


分析: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>


發佈了172 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章