是浮点精度误差吗?

时间:2015-12-12 20:41:06

标签: c++ math

我的任务是

  

找到给定集合中的最大并行数。设线为

     

Ax+ By + C (0 <= |A|,|B|,|C| <= 10^9)

输入格式为:

A B C

我不知道我哪里出错了。当我尝试它时似乎工作得很好,但它显示了错误答案&#34;对于在线评判的测试用例!

这是我的代码:

int t;
cin>>t;
while(t--)
{
    int n;
    cin>>n;
    map<pair<double, double>, long long> m;
    vector<double> y;
    vector<double> z;
    while(n--)
    {
        double a,b,c;
        cin>>a>>b>>c;
        if(b==0)
        {
            double x=-(c/a);
            bool l=true;
            for(vector<double> :: iterator it=y.begin();it!=y.end();it++)
            {
                if(*it == x)
                {
                    l=false;
                    break;
                }
            }
            if(l==true)
            y.push_back(x);
        }
        else if(a==0)
        {
            double x=-(c/b);
            bool l=true;
            for(vector<double> :: iterator it=z.begin();it!=z.end();it++)
            {
                if(*it == x)
                {
                    l=false;
                    break;
                }
            }
            if(l==true)
            z.push_back(x);
        }
        else
        {
            double A=-(a/b);
            double B=-(c/b);
            bool l=true;
            for(map<pair<double, double>, long long> :: iterator it=m.begin();it!=m.end();it++)
            {
                if(it->first.first == A && it->first.second != B)
                {
                    it->second = it->second + 1;
                    l=false;
                    break;
                }
                if(it->first.second == B)
                {
                    l=false;
                    break;
                }
            }
            if(l==true)
            m.insert(pair<pair<double,double>,long long>(make_pair(A,B),1));
        }
    }
    long long ans=(long long)max(y.size(),z.size());
    for(map<pair<double, double>, long long> :: iterator it=m.begin();it!=m.end();it++)
    {
        if(it->second > ans)
        ans=it->second;
    }
    cout<<ans<<'\n';
}

0 个答案:

没有答案