2013/7/21

来源:互联网 发布:单片机网络培训机构 编辑:程序博客网 时间:2024/05/29 09:34

CF 9B. Running Student
本题在int运算完转化为double时,出现问题:1.先进行int的整除后转换为double.    2.int
型平方后超出int范围,数据溢出后转换为double,数据同样溢出。
这两个问题可以归为一类:double=int运算式。先用int算出结果,后转换为double。

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>int main(){    int vb,vs,n,x[105],x0,y0,i,r;    double t1[105],t2[105],min,min2;    scanf("%d%d%d",&n,&vb,&vs);    for(i=0;i<n;i++)        scanf("%d",&x[i]);    scanf("%d%d",&x0,&y0);    for(i=1;i<n;i++)    {        t1[i]=x[i]/vb;//此处为精度丢失处        t2[i]=sqrt((x0-x[i])*(x0-x[i])+y0*y0);//此处为数据溢出处        t2[i]/=vs;    }    min=1e7;    for(i=1;i<n;i++)    {        if(min>t1[i]+t2[i]){min=t1[i]+t2[i];min2=t2[i];r=i+1;}        else if(min==t1[i]+t2[i])        {            if(t2[i]<min2)            {                r=i+1;                min2=t2[i];            }        }    }    printf("%d\n",r);    return 0;}
ZOJ 3383 Shiro? Kuro?
本题比较无语,通过公式转换,将RGB形式像素转换为黑或白。本题第一时间觉得用
double,int精度丢失比较大。结果double无语的卡了,int过去了

原创粉丝点击