c++求助·关于法雷数列
  • 板块灌水区
  • 楼主ichenyubo
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/20 18:16
  • 上次更新2024/8/20 20:43:11
查看原帖
c++求助·关于法雷数列
1145044
ichenyubo楼主2024/8/20 18:16

求助·关于法雷数列

#include<bits/stdc++.h>
using namespace std;
long long n;//n阶法雷数列
struct fraction{
    long long numerator;//分子
    long long denominator;//分母
    double value=numerator/denominator;//分数值
    friend bool operator < (fraction a,fraction b) {
        return a.value>b.value;
    }
};//分数
bool cmp(fraction a,fraction b) {
    return a.value<b.value;
}
fraction reduction(fraction f) {//分数约分
    long long gcd=__gcd(f.numerator,f.denominator);//分子与分母的最大公因数
    f.numerator/=gcd,f.denominator/=gcd,f.value=f.numerator/f.denominator;
    return f;
}
vector<fraction>v;
priority_queue<fraction>q;
int main() {
    cin>>n;
    for(long long i=2;i<=n;i++) {
        for(long long j=1;j<i;j++) {
            struct fraction tmp;
            tmp.numerator=j,tmp.denominator=i,tmp.value=j/i;
            q.push(reduction(tmp));
        }
    }
    printf("%lld阶法雷数列共%lld项\n",n,q.size()+2);
    printf("$\\frac{0}{1},");
    while(!q.empty()) {
        printf("\\frac{%lld}{%lld},",q.top().numerator,q.top().denominator);
        q.pop();
    }
    printf("\\frac{1}{1}$");
    return 0;
}

这个代码输入5之后第32-37行会输出01,12,23,15,45,35,34,25,12,13,14,11\frac{0}{1},\frac{1}{2},\frac{2}{3},\frac{1}{5},\frac{4}{5},\frac{3}{5},\frac{3}{4},\frac{2}{5},\frac{1}{2},\frac{1}{3},\frac{1}{4},\frac{1}{1}

($\frac{0}{1},\frac{1}{2},\frac{2}{3},\frac{1}{5},\frac{4}{5},\frac{3}{5},\frac{3}{4},\frac{2}{5},\frac{1}{2},\frac{1}{3},\frac{1}{4},\frac{1}{1}$)

但是正常的5阶法雷数列应该是5为:0/1, 1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 1/1

2024/8/20 18:16
加载中...