这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。
题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1170
要注意的有2点:
1.对于乘法时,可能会出现诸如: 9999*9999的。结果必然大于int的存储范围,所以用
__int64(a*b)输出。
2.对于除法,看清楚下面这句话:
The result should be rounded to 2 decimal places If and only if it is not an integer
不是除法就得安小数点2位输出的,对于可以整除的诸如2/1则就输出2.而1/2则输出0.50
// HDOJ 1170
// Author: Tanky Woo
// Accepted 1170 0MS 192K 500 B
#include
int nCases;
int a, b;
char op;
double result;
int main()
{
scanf("%d", &nCases;);
while(nCases--)
{
getchar();
scanf("%c", &op;);
scanf("%d %d", &a;, &b;);
if(op == '+')
printf("%d\n", a+b);
else if(op == '-')
printf("%d\n", a-b);
else if(op == '*')
printf("%I64d\n", __int64(a*b));
else if(op == '/')
{
if(a/b*b == a)
printf("%d\n", a/b);
else
printf("%.2lf\n", double(a)/b);
}
}
return 0;
}