解题代码
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int main() {
int a1, a2, b1, b2, c;
scanf("%d/%d %d/%d %d", &a1, &a2, &b1, &b2, &c);
a1 = (int)(round(1.0 * a1 / a2 * c + 0.5));
b1 = (int)(floor(1.0 * b1 / b2 * c - 0.000000001));
if (a1 > b1) swap(a1, b1);
bool flag = false;
for (int i = a1; i <= b1; i++) {
if (gcd(c, i) == 1) {
if (!flag) flag = true;
else printf(" ");
printf("%d/%d", i, c);
}
}
return 0;
}
测试结果
问题整理
1.基础题目。
2.至于怎么取整,为何取整,要有明确的思路。