HDU2011遇到算术坑
开始是信心满满的。看了眼题目,可以轻松AC的啦。于是代码如下
#include<stdio.h>
int main()
{
int n, i;
while(scanf("%d", &n) != EOF){
while(n--){
double sum = 0;
int x;
scanf("%d", &x);
for(i = 1; i <= x; i++){
if(i % 2 == 1)
sum = sum + (1/i);
else
sum = sum - (1/i);
}
printf("%.2lf\n", sum);
}
}
return 0;
}
结果不管输啥输出都是1.00,思考半天发现,1/n(n≠0)都是0啊。
加个double?哦内部已经为0了,就算double了也是0.00。。
突然想起来1.0啊,内部强制转换就完事了。
没错就是这样。
#include<stdio.h>
int main()
{
int n, i;
while(scanf("%d", &n) != EOF){
while(n--){
double sum = 0;
int x;
scanf("%d", &x);
for(i = 1; i <= x; i++){
if(i % 2 == 1)
sum = sum + (1.0/i);
else
sum = sum - (1.0/i);
}
printf("%.2lf\n", sum);
}
}
return 0;
}
如果你不放心,加个double也行,哈哈哈。
记录一次小坑。