原文地址:http://acm.timus.ru/problem.aspx?space=1&num=1011
背景
每个做英译俄的工作的人都知道英语短语 “Naked conductor runs along the bus”有2种非常不同的意思。
问题
Ekaterinburg市的每辆公交车都有一个售票员。当你需要乘坐公交车的时候,你都需要给售票员钱。我们知道Ekaterinburg市有超过 P% 的、少于 Q% 的人口是售票员。你的任务是计算Ekaterinburg市能满足上述条件的最少的人口。
输入
两个浮点数 P,Q(0.01≤P,Q≤99.99) 。浮点数最多2位小数。
输出
输出最少能满足条件的Ekaterinburg市人口数量。
题解
问题的意思就是,售票员的人数肯定是整数c
,设人口数量p0
,则有p0*p/100<c<p0*q/100
。那么枚举p0
,上下界之间存在整数就可以了,注意上下界是取不到的(这里被坑了一次)。
#include <cstdio>
#include <cmath>
const double eps = 1e-9;
int main() {
double p, q;
int ans;
scanf("%lf%lf", &p, &q);
for (ans = 1; ; ++ans) {
double least = ans * p / 100.0;
int realLeast = (int) ceil(least);
double most = ans * q / 100.0;
int realMost = (int) floor(most);
if (realMost >= realLeast && most - realMost > eps && realLeast - least > eps)
break;
}
printf("%d\n", ans);
return 0;
}