背景
《风云》里有详细记载,自己去看吧^_^…
描述
天下会评选一级弟子,(做出10题以上的有机会参加评选)。最后评选结果神风堂有超过P%但不足Q%的人被评上了(弟子一:听起来像是URAL上的1011。风:闭嘴!!!)。现在给你P和Q,你要算出神风堂最少有多少人。(数据弱了一点,所以好通过)。
题目链接
输入格式
两个实数P,Q。用空格隔开。每个数最多有两位小数。0.00<=p<q<=99.99
输出格式
神风堂最少的人数。
样例输入
13 14.1
样例输出
15
题目分析
设神风堂最少的人数是i,则 i * p * 0.01
到i * q * 0.01
之间至少有一个正整数。
由于将浮点数强制转换为int是不会四舍五入的,所以可以得到
(int)(i * q * 0.01) - (int)(i * p * 0.01) >= 1
题目中说超过P%但不足Q%,也就是说不包括P%和Q%
所以当i * q * 0.01
和i * p * 0.01
恰好都是整数且两数之差为1时,这时是不可取的,因为两者之间并没有一个整数。
因此我们需要令i * q * 0.01
减去一个数,令i * p * 0.01
加上一个数,将刚才的特殊情况进行排除。这个数只要小于0.0001即可,因为 p% 和 q% 的精度是0.0001,只要小于0.0001就不会对正常的情况产生影响。
只要从1开始枚举,第一个符合条件的i就是答案。
AC代码
#include <stdio.h>
#include <math.h>
int main()
{
int i;
double p, q;
scanf("%lf%lf", &p, &q);
for (i = 1;; i++)
{
if ((int)(q * i / 100 - 0.00000001) - (int)(p * i / 100 + 0.00000001) >= 1)
{
printf("%d", i);
break;
}
}
return 0;
}