USACO sec2.1 Ordered Fractions
生活随笔
收集整理的這篇文章主要介紹了
USACO sec2.1 Ordered Fractions
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先兩重 for 循環對可能取的值約分,分子分母分別存放,根據比較分數大小的方法排序,然后按順序輸出(相同的只輸出一個);
/* PROG : frac1 LANG : C++ */ # include <stdio.h> # include <stdlib.h># define MAXN (160 * 160)/***************************************************/ int num[MAXN], den[MAXN], r[MAXN], m = 0; int cmp(const void *xx, const void *yy) {int x = *(int*)xx;int y = *(int*)yy;return num[x]*den[y] > den[x]*num[y] ? 1 : -1; }int gcd(int a, int b) {if (!b) return a;return gcd(b, a%b); }void solve(void) {int i, j, n;scanf("%d", &n);num[0] = 0, den[0] = 1;for (i = 1; i <= n; ++i)for (j = 1; j <= n; ++j){if (i > j) continue;++m;num[m] = i/gcd(i, j);den[m] = j/gcd(i, j);}for (i = 0; i <= m; ++i) r[i] = i;qsort(r, m, sizeof(r[0]), cmp);printf("%d/%d\n", num[r[0]], den[r[0]]);for (i = 1; i <= m; ++i){if (num[r[i]] == num[r[i-1]] && den[r[i]] == den[r[i-1]])continue;elseprintf("%d/%d\n", num[r[i]], den[r[i]]);} }/***************************************************/int main() {freopen("frac1.in", "r", stdin);freopen("frac1.out", "w", stdout);solve();fclose(stdin);fclose(stdout);return 0; }?
轉載于:https://www.cnblogs.com/JMDWQ/archive/2012/08/21/2649232.html
總結
以上是生活随笔為你收集整理的USACO sec2.1 Ordered Fractions的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软ping程序源代码完整版(附详细的注
- 下一篇: jquery 简单日历