NC22915. 顺序的分数
描述
输入描述
单独的一行 一个自然数N
输出描述
每个分数单独占一行
示例1
输入:
5
输出:
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
C++(g++ 7.5.0) 解法, 执行用时: 21ms, 内存消耗: 512K, 提交时间: 2023-07-11 20:34:11
#include<iostream> #include<string> #include<algorithm> using namespace std; int cnt; struct num { int a, b; bool operator<(const num &t) const{ return a * t.b < b*t.a; } }p[40010]; int main() { int n; cin >> n; p[cnt++] = { 0,1 }; p[cnt++]={1,1}; for (int i = 2;i <= n;i++){ for (int j = 1;j < i;j++){ if (__gcd(i, j) == 1) p[cnt++] = { j,i }; } } sort(p, p + cnt); for (int i = 0;i < cnt;i++) cout << p[i].a << "/" << p[i].b << endl; }
C++11(clang++ 3.9) 解法, 执行用时: 21ms, 内存消耗: 632K, 提交时间: 2020-10-11 17:58:29
#include<bits/stdc++.h> using namespace std; struct node{ int a,b; double value; }a[30005]; int n,size; bool cmp(node a,node b){ return a.value<b.value; } int main(){ cin>>n; cout<<"0/1"<<endl; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i>j||__gcd(i,j)!=1)continue; a[++size].a=i,a[size].b=j,a[size].value=(double)i/j; } } sort(a+1,a+size+1,cmp); for(int i=1;i<=size;i++) cout<<a[i].a<<"/"<<a[i].b<<endl; }
Pascal(fpc 3.0.2) 解法, 执行用时: 7ms, 内存消耗: 324K, 提交时间: 2019-08-25 14:16:35
var i,p,q,n:longint; a:array[1..1000]of longint; begin readln(n); while a[1]<>2 do begin p:=a[1]; q:=1; for i:=2 to n do if p*i>q*a[i] then begin p:=a[i]; q:=i; end; writeln(p,'/',q); for i:=1 to n do if p*i=q*a[i] then a[i]:=a[i]+1; end; end.
C 解法, 执行用时: 4ms, 内存消耗: 392K, 提交时间: 2022-03-27 19:48:14
#include <stdio.h> #include <stdlib.h> int N; void shunxu(int a, int b, int m, int n) { if (b > N || n > N) return ; shunxu(a, b, a + m, b + n); if (b + n <= N) printf("%d/%d\n", a + m, b + n); shunxu(a + m, b + n, m, n); } int main(void) { scanf("%d", &N); printf("0/1\n"); shunxu(0, 1, 1, 1); printf("1/1\n"); return 0; }