问题标题: 酷町堂:2638 分数排序

0
0
已解决
汤启恩
汤启恩
新手光能
新手光能

#include<bits/stdc++.h>
using namespace std;
bool gcd(int a,int b){//求出a、b的最大公约数 
    int r;
    while(a%b!=0){
        r=a%b;
        a=b;
        b=r;
    }
    if(b>1)
    return false;
    return true;
}
int main(){
    int n;
    cin>>n;
    cout<<"0/1"<<endl;
    for(int i=1;i<=n;i++){
        for(int j=2;j<=n;j++){
            if(gcd(i,j)&&i*1.0/j<=1&&i!=j)
            cout<<i<<"/"<<j<<endl;    
        }
    } 
    cout<<1<<"/"<<1;
    return 0;
}

怎样才能做到分数排序???


0
0
0
0
李鑫羽
李鑫羽
初级光能
初级光能

要核心代码吗?

李鑫羽在2020-07-14 16:48:35追加了内容

核心代码

for(int i=1;i<=n;i++){
        for(int j=0;j<=i;j++){
            if(gcd(i,j)){
                x++;
                a[x].m=i;
                a[x].z=j;
                a[x].s=j*1.0/i;
            }
        }
    }
    sort(a+1,a+1+x,cmp);
    for(int i=1;i<=x;i++){
        cout<<a[i].z<<"/"<<a[i].m<<endl;
    }

函数

bool gcd(int x,int y){
    int s;
    for(int i=1;i<=max(x,y);++i)
    {
        if(x%i==0&&y%i==0)
            s=i;
    }
    if(s==1) return true;
    return false; 
}

注意使用结构体

0
0
0
王子豪
王子豪
资深守护
资深守护

1.找到所有分数:

for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(f(i,j)||i==1){
                c[m].a=i;
                c[m].b=j;
                m++;
            }
        }
    }

2.排序(建议不用sort,我试过,不对。可以用选择)

注意:

用结构体

0
我要回答