题解
2024-06-21 21:45:57
发布于:广东
24阅读
0回复
0点赞
通分原理:
对于两个数
所以我们只要比较与的大小就行了
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
struct node{
int x, y;//x代表分母y代表分子
};
vector <node> v;
bool cmp(node a, node b){
int xa = a.x * b.y, xb = b.x * a.y;//通分
return xa < xb;
}
int gcd(int x, int y){//这里x表示较大数,不要搞错
if(y == 0) return x;
return gcd(y, x % y);
}
int main(){
int n;
cin >> n;
v.push_back({0, 1});
for(int i = 1; i <= n; i++){
for(int j = 1; j <= i; j++){
if(gcd(i, j) == 1){
v.push_back({j, i});//录入分子分母
}
}
}sort(v.begin(), v.end(), cmp);
for(int i = 0; i < v.size(); i++){
printf("%d/%d\n", v[i].x, v[i].y);
}
return 0;
}
这里空空如也
有帮助,赞一个