这道题目还是简单的,但是自己WA了好几次,总结下:
1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结
题目要求输入的格式:
START
X Y Z
END
这算做一个data set,这样反复,直到遇到ENDINPUT。我们可以先吸纳一个字符串判断其是否为ENDINPUT,若不是进入,获得XYZ后,吸纳END,再进行输出结果
2.注意题目是一个圆周,所以始终用锐角进行计算,即z=360-z;
3.知识点的误区:浮点数截断
double data;
printf("%d",int(data)); //强制类型转换后输出
printf("%.0lf",data); //直接舍弃小数位
这两个是不一样的,为什么暂不知,在论坛提问中。。。
#include <stdio.h> #include <math.h> #include <string.h> #define pi 3.14159 int main() { char str[10]; while(scanf("%s",str)!=EOF&&strcmp(str,"ENDOFINPUT")) { int x,y,z; double dis,gal; scanf("%d%d%d",&x,&y,&z); if(z>180) z=360-z; dis=2*pi*x*(double(z)/360.0)*2; gal=y*5.0; scanf("%s",str); //把END吸收掉 if(dis<=gal) { printf("YES %d ",int((gal-dis)/5.0)); } else { printf("NO %d ",(int)gal); } } return 0; }