首页 > 代码库 > HDU-1701-ACMer
HDU-1701-ACMer
题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=1701
解题:
好久没做题,好久没写解题思路了,连简答题都不会做了,下午的月赛挂了,我悲剧了,在此发牢骚了。o(︶︿︶)o唉
好好的一题简答题,硬是WA,浮点型的陷阱,不止一次掉进去了。刚开始看不懂题目,ACMer人数在P%和Q%之间,那么P%的人与Q%的人就不能相同,因为一个是至少,一个是至多。看代码:
[cpp] view plaincopy
- #include <iostream>
- using namespace std;
- int main()
- {
- int t,i;double a,b;
- cin>>t;
- while (t--)
- {
- cin>>a>>b;
- for(i=1;;i++)
- {
- if ((int)(a*i/100)<(int)(b*i/100))
- break;
- }
- cout<<i<<endl;
- }
- return 0;
- }
运行浮点型要特别注意,下面的情况经常出现。
WA
#include<stdio.h>
int main(void)
{
double p,q;
double i,k;
int n;
while(scanf("%d",&n)==1)
{
while(n--)
{
k=1.0;
scanf("%lf%lf",&p,&q);
for(i=1;;i++)
{
p=p/100;
q=q/100;
if((int)(i*p)<(int)(i*q))
{
printf("%.lf\n",i);
break;
}
}
}
}
return 0;
}
AC
#include<stdio.h>
int main(void)
{
double p,q;
double i,k;
int n;
while(scanf("%d",&n)==1)
{
while(n--)
{
k=1.0;
scanf("%lf%lf",&p,&q);
for(i=1;;i++)
{
if((int)(i*p/100)<(int)(i*q/100))
{
printf("%.lf\n",i);
break;
}
}
}
}
return 0;
}
HDU-1701-ACMer
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。