题目链接
实现
#include <iostream>
#include <cstdio>
using namespace std;
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a%b);
}
int lcm(int a, int b)
{
return a / gcd(a, b)*b;
}
int main()
{
int n1, m1, n2, m2, k,j,count=0;
scanf("%d/%d %d/%d %d", &n1, &m1, &n2, &m2, &k);
int comM = lcm(m1, m2);
int comN1 = n1*comM / m1;
int comN2 = n2*comM / m2;
int comMK = lcm(comM, k);
int comNmin = comN1*comMK / comM < comN2*comMK / comM ? comN1*comMK / comM : comN2*comMK / comM;
int comNmax = comN1*comMK / comM > comN2*comMK / comM ? comN1*comMK / comM : comN2*comMK / comM;
for (j = comNmin+1; j < comNmax; j++)
{
if (j % (comMK / k) == 0 && gcd(j / (comMK / k), k) == 1)
{
if(count==0) printf("%d/%d", j / (comMK / k), k);
else
printf(" %d/%d", j / (comMK / k), k);
count++;
}
}
return 0;
}