求助!!!打表91分超了
查看原帖
求助!!!打表91分超了
544756
xiaobing楼主2023/1/8 12:40
#include<bits/stdc++.h>
using namespace std;
struct Pos{
	int a,b;
}u[100100];
int n;
int P(int a,int b){
	int l=min(a,b);
	for(int i=2;i<=l;i++)
		if(a%i==0&&b%i==0)
			return 0;
	return 1;
}
int f(int a,int b){
	if(b==0)
		return a;
	if(a<b)b=a;
	return f(b,a%b);
}
void S(int a,int b){
	int c=u[a].b,d=u[b].b;
	int k=f(c,d);
	if(d/k*u[a].a<c/k*u[b].a)
		swap(u[a],u[b]);
}
int main(){
	cin>>n;
	u[0].a=0;
	u[0].b=1;
	u[1].a=1;
	u[1].b=1;
	int k=2;
	for(int i=1;i<n;i++)
		for(int j=i+1;j<=n;j++)
			if(P(i,j))
				u[k++]={i,j};
	for(int i=0;i<k;i++)
		for(int j=0;j<k;j++)
			S(i,j);
	for(int i=0;i<k;i++)
		cout<<u[i].a<<"/"<<u[i].b<<endl;
    return 0;
}
2023/1/8 12:40
加载中...