您的位置:首页 > 其它

[解题报告]Ural 1011 Conductors

2011-05-17 13:18 218 查看
题目地址:http://acm.timus.ru/problem.aspx?space=1&num=1011

题目大意,城市有很多售票员,人数超过市民人数的P%而不倒Q%,求出最小市民数.其中题目给出的p和q最多到小数点后两位.

如果给出一个市民数N符合条件,则在N*P%和N*Q%之间存在一个正指数M即为售票员的人数.所以只要找到一个最小N使M存在即可.分析数据规模,P和Q之间的最小差为0.01,易得市民数N不会超过10000,所以枚举即可.该题要注意两点,一个是精度问题,另一个就是注意题目给出的范围不包括p%和q%..因为这个WA了一次....上代码..

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
new Main();
}
public Main(){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
double p=sc.nextDouble();
double q=sc.nextDouble();
int res=1;
while(true){
//避免精度问题,转换成整数
int p2=(int)(p*res*100);
int q2=(int)(q*res*100);
int ans=q2/10000*10000;
//满足p和q之间存在一个正整数
if(p2<ans&&q2>ans){break;}
res++;
}
System.out.println(res);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: