注意题中给出的两个分数大小不确定,需要自己先找出最小值和最大值。
#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;
}