PAT B1062 最简分数 (20 分)

在这里插入图片描述
注意题中给出的两个分数大小不确定,需要自己先找出最小值和最大值。

#include <cstdio>
#include <algorithm>

using namespace std;

int gcd(int a, int b){
    
    
	if(b == 0) return a;
	gcd(b, a%b);
}

int main(){
    
    
	int n1, n2, m1, m2, k;
	scanf("%d/%d %d/%d %d", &n1, &m1, &n2, &m2, &k);
	
	double low = min(n1*1.0/m1, n2*1.0/m2);
	double high = max(n1*1.0/m1, n2*1.0/m2);
	int temp[1010];
	int num = 0;
	for(int i=1; i<k; i++){
    
    
		if((1.0*i)/k>low && (1.0*i)/k<high){
    
    
			if(gcd(i, k) == 1){
    
    
				temp[num++] = i;
			}
		}
	}
	for(int i=0; i<num; i++){
    
    
		printf("%d/%d", temp[i], k);
		if(i != num-1) printf(" ");
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45964844/article/details/113754597