精度问题

来源:互联网 发布:lovelive日服卡牌数据 编辑:程序博客网 时间:2024/04/30 22:59

ZOJ 3488 Conic Section

由于所给数据无非4种情况


conic sectionequationcirclex2+y2=a2ellipsex2/a2+y2/b2=1parabolay2=4axhyperbolax2/a2-y2/b2=1

只要考虑a,c即可,但要注意精度问题

#include<iostream>#include<cstdio>#include<cmath>using namespace std;int main(){    int t;    cin>>t;    while(t--)    {        double a,b,c,d,e,f;        cin>>a>>b>>c>>d>>e>>f;        if(a*c==0)printf("parabola\n");        else if(a*c<0)printf("hyperbola\n");        else        {            if(fabs(a-c)<0.000001)printf("circle\n");            else printf("ellipse\n");        }    }return 0;}


conic sectionequationcirclex2+y2=a2ellipsex2/a2+y2/b2=1parabolay2=4axhyperbolax2/a2-y2/b2=1
ZOJ1058 已知利率表 计算转换到最后的值 ,每次转换精确到 美分

#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<iostream>#define pi 3.1415926using namespace std;double f(double x){    x=(int)(x*100+0.5);    x/=100;    return x;}int main(){    int t;    cin>>t;    double rat[6][6];    while(t--)    {        int i,j;        for(i=1;i<=5;i++)        {            for(j=1;j<=5;j++)cin>>rat[i][j];        }        int n,city[100000];        city[0]=1;        double ans;        while(cin>>n&&n)        {            for(i=1;i<=n;i++)            {                cin>>city[i];            }            city[n+1]=1;            cin>>ans;            ans=f(ans);            for(i=1;i<=n+1;i++)            {                ans=ans*rat[city[i-1]][city[i]];                ans=f(ans);            }            printf("%.2lf\n",ans);        }        if(t>0)printf("\n");    }    return 0;}





0 0