救命!!!为什么只有45分,求助大神!!!!!
查看原帖
救命!!!为什么只有45分,求助大神!!!!!
557408
Tony_rao楼主2022/6/2 13:58
#include<bits/stdc++.h>
using namespace std;
int n;
int a[10000000];

struct ryy
{
	int c,z;
	double f;
} num[10000000];

int Cmp(ryy a,ryy b) {
	return a.f < b.f;
}

bool check(int x, int y)
{
	for(int i=2;i<n;i++)
	{
		if(x % i == 0&& y % i == 0)
		return false ;
	}	
	return true ;
}

int j=0;

int dfs(int x)
{
    if(x == 2)
    {
      if(check(a[0],a[1]))
      {
      	j++;
      	num[j].c = a[0];
      	num[j].z = a[1];
      }
      	
    }
	else
    {
        for(int i=a[x-1]+1;i<=n;++i)
        {
            a[x] = i;
            
            dfs(x+1);
        }
    }
}
int main()
{
    cin >> n;
    dfs(0);
    puts("0/1");
    for(int i = 0;i < j;i++)
    	num[i].f = 1.0 * num[i].c / num[i].z;
    sort(num,num + j,Cmp);
	for(int i=0;i<=j;i++)
	{
		if(num[i].z)
			printf("%d/%d\n",num[i].c,num[i].z);
	}
	puts("1/1");
    return 0;
}

2022/6/2 13:58
加载中...